android - PBKDF2 与 Android 上的 SHA256

标签 android encryption sha256 pbkdf2

我想使用 PBKDF2 和 SHA256 生成密码的派生散列。使用此 SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1") 这项工作但它使用 SHA1。 使用 SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256")(或使用 spongycaSTLe 时使用 SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256","SC"))我遇到错误。

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

最佳答案

如果您使用 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。

关于android - PBKDF2 与 Android 上的 SHA256,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11628256/

相关文章:

java - 更新创建的 sqlite 数据库中的整行(包含多列)

c# - System.Security.Cryptography 与 PCLCrypto

c - 打印 SHA256 和

java - 使用 OpenSSL 签名消息;无法使用 Android Java 进行验证

python - 如何在 Python 3 中从 R 重现基于 SHA256 的 HMAC

android - Intent 中的可序列化对象以字符串形式返回

java - 了解 R.java 和 Android 中的本地化

java - 将图标定位在布局上方一半

java - 如何在 PGP key 环和 Java keystore 文件之间进行转换?

java - 初始化 FingerpringManager.Crypto 对象,获取不受 AndroidKeyStore 提供程序支持的 Crypto 原语?