【问题标题】:KeySpec throws "Salt not found" - Salt isn't a requirementKeySpec 抛出“未找到盐”- 盐不是必需的
【发布时间】:2018-12-05 11:07:20
【问题描述】:

我目前正在编写一小段代码,它应该在字节[] 存储在文件中之前对其进行加密。在下面的 sn-p 中,我尝试使用 PBKDF2 从密码生成 SecretKey。

public SecretKey deriveKey(String password)
        throws NoSuchAlgorithmException, InvalidKeySpecException {
    SecretKeyFactory kf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
    KeySpec specs = new PBEKeySpec(password.toCharArray());
    SecretKey key = kf.generateSecret(specs);
    return key;
}

这会引发异常

java.security.spec.InvalidKeySpecException:找不到盐

在 return 语句之前的最后一行。这对我来说似乎很混乱,因为 PBEKeySpec 明确不需要更多参数,如 here 所示。

这不是悲剧,反正我以后要加盐,甚至上面已经定义了,但我很好奇是否有人知道为什么会发生这种情况。我可能做错了什么,只是没有注意到。

【问题讨论】:

    标签: java exception encryption passwords


    【解决方案1】:

    这与 PBEKeySpec 类是否需要盐无关。算法PBKDF2 需要盐。 API 是一个通用 api,应该满足多种算法,其中一些可能会在未来被定义。

    【讨论】:

      猜你喜欢
      • 2014-05-03
      • 2010-11-30
      • 2015-06-29
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 2015-04-17
      • 2022-07-14
      相关资源
      最近更新 更多