相对于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,但我找不到问题。
由于
答案 0 :(得分:0)
创建哈希后,我使用
import sun.misc.BASE64Encoder
(new BASE64Encoder()).encode(encryptedPwd)
创建一个我可以使用的正确字符串。