为什么我的哈希值在Java中永远不匹配?

时间:2011-04-05 01:33:28

标签: java

我有.jsp接受密码输入。即使使用attempt.equals(password)的测试在散列之前工作,它也不会与应用程序内的密码哈希相匹配。

我正在传递字符串:

PasswordManager.checkPassword(request.getParameter("password"))

这是我的哈希码:

byte[] password = p.getBytes("UTF-8");
byte[] attempt = a.getBytes("UTF-8");

passwordHash = DigestUtils.md5(password);
attemptHash = DigestUtils.md5(attempt);

此外,我已在.jsp

中设置了编码
<fmt:requestEncoding value="UTF-8" />

然而,哈希仍然存在着顽固的不同。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

这些值告诉我,也许toString()没有重载。你在字节数组上调用toString吗?如果是,那些是两个不同对象的哈希码。

试试这个:

byte[] password = p.getBytes("UTF-8");
byte[] attempt = a.getBytes("UTF-8");

passwordHash = DigestUtils.md5(password);
attemptHash = DigestUtils.md5(attempt);

System.out.println(new String(passwordHash));
System.out.println(new String(attemptHash));

以这种方式查看它们是否是相同的值。