gpt4 book ai didi

java - 在 Java 中生成相同的 MD5 哈希值

转载 作者:行者123 更新时间:2023-12-02 07:53:46 26 4
gpt4 key购买 nike

尝试创建安全登录时,我决定使用以下代码创建 MD5 哈希值,该代码改编自How can I generate an MD5 hash?

但是,当创建用户时,这不会生成与在登录页面上创建的用户相同的哈希值。这是为什么,因为我认为每个字符串的哈希值都是唯一的。

    MessageDigest messageDigest = null;

try{
messageDigest = MessageDigest.getInstance("MD5");
}catch(NoSuchAlgorithmException e){
System.out.println("Error: " + e);
}

messageDigest.reset();
messageDigest.update(inPassword.getBytes());
byte[] digest = messageDigest.digest();
BigInteger bigInt = new BigInteger(1, digest);
String encodedPass = bigInt.toString(16);

while (encodedPass.length() < 32) {
encodedPass = "0" + encodedPass;
}


inPassword = encodedPass;

最佳答案

这至少是问题的一部分:

messageDigest.update(inPassword.getBytes());

这是使用平台默认编码将密码转换为字节。这可能因运行它的每个系统而异。我强烈建议您指定一种编码 - 最好是能够处理所有 Unicode 字符(例如 UTF-8)的编码。

您可能还想考虑加盐,并使用比 MD5 更好的东西,而且我不确定您从 byte[] 到十六进制的转换 - 它可能 没关系,但我会找到一个库来完成整个事情而不使用 BigInteger

关于java - 在 Java 中生成相同的 MD5 哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9911541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com