我想使用带有SHA256的PBKDF2生成密码的派生哈希。使用此SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1")
这项工作,但它使用SHA1。
使用SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256")
(或SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256","SC")
使用spongycastle时)我有错误。
如何使用PBKDF2WithHmacSHA256成功生成哈希?
答案 0 :(得分:17)
如果您使用SpongyCastle的1.47或更高版本,您可以直接调用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。
答案 1 :(得分:2)
Bouncy Castle不支持PBKDF2WithHmacSHA256
所以这不起作用。您可以尝试自己实现它。查看PKCS5S2ParametersGenerator.java
的来源,并将SHA1Digest
替换为SHA256Digest
。