7

我想使用带有 SHA256 的 PBKDF2 生成密码的派生哈希。有了这个SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1")工作,但它使用 SHA1。使用SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256")(或SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256","SC")使用 spongycastle 时)我有一个错误。

如何使用 PBKDF2WithHmacSHA256 成功生成哈希?

4

2 回答 2

20

如果您使用 1.47 或更高版本的 SpongyCastle,您可以直接调用 PBKDF2WithHmacSHA256:

PKCS5S2ParametersGenerator generator = new PKCS5S2ParametersGenerator(new SHA256Digest());
generator.init(PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(password), salt, iterations);
KeyParameter key = (KeyParameter)generator.generateDerivedMacParameters(keySizeInBits);

在 BC < 1.47 的版本中,您不能指定 SHA256 摘要,它默认为 SHA1。

于 2013-03-08T21:06:21.643 回答
2

Bouncy Castle 不支持PBKDF2WithHmacSHA256,所以这行不通。您可以尝试自己实现它。查看来源PKCS5S2ParametersGenerator.java并替换SHA1DigestSHA256Digest.

于 2012-07-25T03:05:49.380 回答