【问题标题】:PBKDF2 with SHA256 on android带有 SHA256 的 PBKDF2 在 android 上
【发布时间】:2012-07-22 14:48:33
【问题描述】:

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

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

【问题讨论】:

    标签: android encryption sha256 pbkdf2


    【解决方案1】:

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

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

    在 BC

    【讨论】:

    • 是的,有效。 Android 本身不会处理 AES256 加密,因此您需要上述内容。使用“key.getKey()”和导入 Spongy Castle 获得的 byte[] 很容易,只需将以下内容添加到 build.gradle 的依赖项中: compile 'com.madgag.spongycastle:core:1.54.0.0' compile 'com .madgag.spongycastle:prov:1.54.0.0' 编译 'com.madgag.spongycastle:pkix:1.54.0.0' 编译 'com.madgag.spongycastle:pg:1.54.0.0'
    • compile 'com.madgag.spongycastle:core:1.54.0.0' 就够了,你不需要@MacD列出的额外依赖项
    【解决方案2】:

    Bouncy Castle 不支持PBKDF2WithHmacSHA256,所以这不起作用。您可以尝试自己实现它。查看PKCS5S2ParametersGenerator.java 的来源,将SHA1Digest 替换为SHA256Digest

    【讨论】:

    • 您知道是否有任何与Android兼容的现有库具有此实现?
    • 没听说过。不过,几乎所有东西都应该兼容,因为这并没有真正做任何特定于平台的事情。
    猜你喜欢
    • 2022-01-14
    • 2011-05-29
    • 2010-11-24
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 2012-01-30
    • 2013-12-01
    相关资源
    最近更新 更多