我有两个相同的 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/