gpt4 book ai didi

Java 哈希密码不匹配

转载 作者:行者123 更新时间:2023-12-01 11:27:51 24 4
gpt4 key购买 nike

在 Google 中搜索并在 StackOverflow 中观看了一些帖子( Java hashing passwordsHashing Password )。我尽量不重复问题并自己寻找答案,但正如您所理解的,事实并非如此。

我正在 Java 中创建一个简单的库,以使用 SHA256 算法对密码进行哈希处理。

每次我创建哈希时,生成的密码都是不同的。 SHA256 和 MD5 算法会发生这种情况。

为什么会发生这种情况?我认为生成的密码应该是相同的。我可能完全错误并且对哈希的工作原理感到困惑。

哈希方法:

CipherString.java

    public static String cipherPassword(String pwd, String salt) throws NoSuchAlgorithmException, UnsupportedEncodingException
{
MessageDigest d = MessageDigest.getInstance("SHA-256");
d.update(salt.getBytes("UTF-8"));
byte[] hash = d.digest(pwd.getBytes("UTF-8"));

StringBuilder sb = new StringBuilder();

for(int i=0; i< hash.length ;i++)
{
sb.append(Integer.toString((hash[i] & 0xff) + 0x100, 16).substring(1));
}

String pwdCifrada = sb.toString();

return pwdCifrada;
}

编辑:

旧的 Main.java(有缺陷的代码)

String username = txtUsername.getText();
char[] password = txtPassword.getPassword();
String hashedPassword = cipherPassword(password.toString(), username);

新的 Main.java(修复/解决的代码)

String username = txtUsername.getText();
char[] password = txtPassword.getPassword();
String hashedPassword = cipherPassword(new String(password), username);

我已经删除了所有不需要的模型、 View 和 Controller 。

谢谢大家。

最佳答案

我强烈建议使用库来为您处理这个问题。

考虑 Apache Commons Codec 库:

import org.apache.commons.codec.digest.DigestUtils;

public class HashTest {
public static String cipher(String pwd, String salt) {
return DigestUtils.sha256Hex(pwd+salt);
}
public static void main(String[] args) {
String p = "password";
String s = "randomSalt";
String c = cipher(p, s);
System.out.println(c);
}
}

这将始终打印

a0494b0d7ef89bba60f9703e2c438465cd1241cc440a8fc20f4330639d2c9c2f

如果您使用 Maven 来管理依赖项,您可以在此处查看最新版本:http://mvnrepository.com/artifact/commons-codec/commons-codec

或者使用当前最新的:

<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>

关于Java 哈希密码不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30670123/

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