gpt4 book ai didi

来自 Web 服务的相同字符串的 Java md5 哈希对于每个事务都是不同的

转载 作者:行者123 更新时间:2023-12-02 00:13:45 25 4
gpt4 key购买 nike

我正在尝试比较来自 Web 服务的 java 密码。

我使用以下命令从命令行调用服务:

curl -d '[{"usr":"joe","password":"joe"}]' http://mydomain.com:8080/myservice/login

我解析 JSON 并将密码传递给哈希方法。

我的哈希方法如下:

 private String createHash(String password){

byte[] bytesOfMessage = null;
try {
bytesOfMessage = password.getBytes("UTF-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

MessageDigest md = null;
try {
md = MessageDigest.getInstance("MD5");

} catch (NoSuchAlgorithmException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String thedigest = md.digest(bytesOfMessage).toString();
System.out.println("passed in: "+thedigest);

return thedigest;
}

问题是每次我使用完全相同的密码调用此方法时,打印的哈希值都不同。如何让密码具有相同的哈希值,以便我可以比较密码并对用户进行身份验证?

谢谢!

最佳答案

digest() 方法返回一个 byte[]toString() 方法返回 byte[] 正在打印字节数组的对象标识,而不是内容。一般来说,为了打印出byte[]的结果,需要将字节转换为可打印的字符串(通常使用十六进制编码或base64编码)。十六进制编码经常用于 md5 校验和,example here .

关于来自 Web 服务的相同字符串的 Java md5 哈希对于每个事务都是不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12268962/

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