0

我在 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�

其中“用户密码哈希”是从数据库中恢复的哈希(我们可以看到它与注册时的哈希不匹配),“输入密码哈希”是来自登录表单的哈希(与注册时的哈希匹配)。

这是我获取哈希的方法MessageDigest.getInstance("MD5").digest((password+salt).getBytes("UTF-8"))

我的数据库是 utf8_general_ci

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

谢谢

4

1 回答 1

0

好的,我找到了一个解决方法:

在创建我使用的哈希之后

import sun.misc.BASE64Encoder

(new BASE64Encoder()).encode(encryptedPwd)

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

于 2013-11-05T08:39:53.577 回答