从数据库恢复后,MD5密码哈希不匹配

时间:2013-11-03 17:03:52

标签: mysql database playframework md5

相对于MySQL数据库中用户密码的哈希,我遇到了问题。在开发过程中,我使用的是内存数据库(使用Playframework),一切都运行良好。但是当使用持久性数据库时,我恢复的哈希与我上传的哈希不匹配。因此,我认为存在某种编码问题

以下是我试图找到问题的一些测试

Salt at registration: hlsqjnv5vhplrgrsoa4g524b0q
Hash at registration: v�!�ȡuNB͞l�q�
User pwd hash: v!?uNB?lq
Salt at login: hlsqjnv5vhplrgrsoa4g524b0q
Input pwd hash: v�!�ȡuNB͞l�q�

“User pwd hash”是从数据库中恢复的哈希值(我们可以看到它与注册时的哈希值不匹配),“输入pwd哈希”是登录表单中的哈希值(与注册时的哈希值匹配) )。

以下是我获取哈希MessageDigest.getInstance("MD5").digest((password+salt).getBytes("UTF-8"))

的方法

我的数据库是utf8_general_ci

所以一切似乎都是UTF-8,但我找不到问题。

由于

1 个答案:

答案 0 :(得分:0)

哎呀,我找到了一个工作区:

创建哈希后,我使用

import sun.misc.BASE64Encoder

(new BASE64Encoder()).encode(encryptedPwd)

创建一个我可以使用的正确字符串。