我正在调用MessageDigest.digest()
方法来获取密码的哈希值。如果密码包含挪威字符,例如'ø'
,此方法为具有不同最后一个字符的不同字符串返回相同的哈希值。
"Høstname1"
并且"Høstname2"
具有相同的哈希值,但"Hostnøme1"
由于'ø'
位置不同,哈希值也会不同。这是使用“utf-8”编码。对于“iso-8859-1”编码,我没有看到这个问题。这是一个已知问题还是我在这里遗漏了什么?
这是我的代码:
import java.security.MessageDigest;
String password = "Høstname1";
String salt = "6";
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
byte[] hash = new byte[40];
messageDigest.update(salt.getBytes("utf-8"), 0, salt.length());
messageDigest.update(password.getBytes("utf-8"), 0, password.length());
hash = messageDigest.digest();