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

标签 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" />

然而,哈希仍然顽固地不同。有什么想法吗?

最佳答案

这些值向我表明,也许 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/

相关文章:

java - 如何在外部文件夹中为 tomcat 中的 Web 应用程序配置 log4j.properties

Java异常处理: Missing return type

java - 如何用多边形绘制云?

java - 根据多个 Spring 配置文件定义 bean

Java 多重扫描器

java - 为什么在方法中看不到 "private static"?

java - 附加到文本文件

java - 在 Android 中保存 Arraylist

Java 应用程序即服务——有哪些选择?

Java 空对象还是对象创建?