android中的PBKDF2安全密钥

时间:2013-03-04 19:02:07

标签: android security encryption sha pbkdf2

我从服务器密码获得如下所示,我需要验证用户密码是否与表单服务器相同。我该怎么办?

从服务器我得到了这个

pbkdf2_sha256$10000$v2WJyd8HkqhU$QVAp707PYTiFDHvzjwBCTbecr9+6q2OIPsunPyOxXGU=

1 个答案:

答案 0 :(得分:1)

所以BouncyCastle(Andorid中的加密提供程序)没有使用SHA256实现PBKDF2,因此您必须进行非常轻微的自定义。这个SO answer告诉你要修改哪个类来设置算法。然后你需要整合它,或者弄清楚如何自己调用它(我恐怕对此无能为力)

就哈希本身而言,格式(如defined here)是:

<algorithm>$<iteration count>$<salt>$<hash>

在你的情况下,迭代计数是10000,你的salt是ascii字符串v2WJyd8HkqhU,而hash是由base64字符串QVAp707PYTiFDHvzjwBCTbecr9+6q2OIPsunPyOxXGU=

表示的字节数组

您将使用指定的参数计算密码的utf8字符串的哈希值。然后,您可以base64编码哈希的输出并比较字符串,或者base64解码收到的哈希并比较字节数组。 Apache Commons Codec在其Base64类中提供了一些很好的Base64编码/解码方法。