我从服务器密码获得如下所示,我需要验证用户密码是否与表单服务器相同。我该怎么办?
从服务器我得到了这个
pbkdf2_sha256$10000$v2WJyd8HkqhU$QVAp707PYTiFDHvzjwBCTbecr9+6q2OIPsunPyOxXGU=
答案 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编码/解码方法。