Android中的PBKDF2函数

Posted

技术标签:

【中文标题】Android中的PBKDF2函数【英文标题】:PBKDF2 function in Android 【发布时间】:2011-12-26 20:25:55 【问题描述】:

是否有适用于 android 的 PBKDF2 实现。我正在尝试使用 PBKDF2 函数派生密钥。我找不到这样做的例子。

【问题讨论】:

【参考方案1】:

迟到了,但很多 Android 设备都包含带有标准 SecretKeyFactory 的 PBKDF2。但是,很多人建议使用 Spongycastle 之类的东西来保证您可以使用该算法。

如果找不到,它会抛出异常

    SecretKeyFactory keyFactory = null;
    try
    
        keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
     
    catch (NoSuchAlgorithmException e)

【讨论】:

以下文章包含一个使用 SecretKeyFactory 的 PBKDF 的示例方法:android-developers.blogspot.de/2013/02/…(请参阅“更加安全”部分)。 适用于 Android API 10+,如 developer.android.com/reference/javax/crypto/… 所记录的,供任何想知道的人使用【参考方案2】:

免费选项是:

http://rtner.de/software/PBKDF2.html http://bouncycastle.org/(可能比某些 Android 捆绑的 org.bouncycastle 更新) http://www.unwesen.de/2011/06/12/encryption-on-android-bouncycastle/ https://github.com/rtyley/spongycastle#readme

如果商业组件是一个选项,请参阅例如http://www.chilkatsoft.com/java-encryption.asp(示例代码http://www.example-code.com/android/crypt2_pbkdf2.asp)。

另一种选择是使用javax.crypto 并自己实现它,尽管我不建议这样做...

【讨论】:

以上是关于Android中的PBKDF2函数的主要内容,如果未能解决你的问题,请参考以下文章

如何为 android api 8 (Froyo) 添加 PBKDF2WithHmacSHA1

Android 中的 AES 密钥生成

为啥我的 pbkdf2 实现这么慢(与 SQLCipher 相比)?

SHA1 在 PBKDF2 中用作散列函数是不是仍然安全?

PBKDF2-HMAC-SHA-512 测试向量

如何在 Android 上安全地存储密码?