java - 比较两个摘要的 md5 字符串返回 false

标签 java jsp servlets

我有两个相同的 md5 哈希密码,应该使用 MessageDigest.isEqual 方法返回 true。然而比较返回 false。

当使用 Array.toString 打印字节数组时,它们是相同的。它仍然不起作用,无论是对于 Arrays.euqals 还是对于 MessageDigest.isEqual。

public boolean verifyUserCredentials(String username, MessageDigest password) {

        ListIterator<User> iterator = userList.listIterator();
        while (iterator.hasNext()) {
            User user = iterator.next();
            byte md1[] = user.getPassword().digest();
            byte md2[] = password.digest();
            if (user.getUsername() == username && MessageDigest.isEqual(md1, md2)) {
                return true;
            } 
        }
        return false;
    }

最佳答案

您已经使用了 ==,但对于像 String 这样的对象,它会比较对象引用以查看它们是否引用同一对象。

要比较String值,请使用String#equals相反。

关于java - 比较两个摘要的 md5 字符串返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16452001/

相关文章:

java - 如何将泛型用于不同类的相似方法

java - JProfiler 分析新线程

java - 请求 getParameter for Text 返回 null

java - 使用 ThreadLocal 绕过 Servlet 线程不安全?

java - 从 Java webapp 子目录提供静态文件

java - 如何使用 Spring 3.2.3 JavaConfig 读取环境变量?

java - Arrays.fill 在 Java 中使用多维数组

java - 添加通过用户输入决定的数组元素

java - 找到缓慢 JSP 根本原因的最佳技术是什么?

java - spring中form-login标签的作用是什么