在Android上使用SHA256的PBKDF2

时间:2012-07-24 09:48:13

标签: android encryption sha256 pbkdf2

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

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

2 个答案:

答案 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