我有.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" />
然而,哈希仍然存在着顽固的不同。有什么想法吗?
答案 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));
以这种方式查看它们是否是相同的值。