我有一个 .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" />
然而,哈希仍然顽固地不同。有什么想法吗?
最佳答案
这些值向我表明,也许 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));
通过这种方式查看它们是否是相同的值。
关于java - 为什么我的哈希值在 Java 中永远不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5546210/