gpt4 book ai didi

java - 为什么我的大整数前面有一个减号?

转载 作者:行者123 更新时间:2023-12-02 11:07:28 25 4
gpt4 key购买 nike

package ewa;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.math.BigInteger;
/**
*
* @author Lotus
*/
public class md5Hash {

public static void main(String[] args) throws NoSuchAlgorithmException {
String test = "abc";

MessageDigest md = MessageDigest.getInstance("MD5");
try {
md.update(test.getBytes("UTF-8"));
byte[] result = md.digest();
BigInteger bi = new BigInteger(result);
String hex = bi.toString(16);
System.out.println("Pringting result");
System.out.println(hex);
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(md5Hash.class.getName()).log(Level.SEVERE, null, ex);
}


}
}

我正在测试字节到十六进制的转换,完成后,最终结果在字符串的开头有一个减号,为什么会发生这种情况?我已阅读文档,它说它将添加一个减号,但我不明白它。减号会影响哈希结果吗?因为我将实现它来哈希存储在我的数据库中的密码

最佳答案

因为BigInteger恰好是负数,这意味着最高有效位是1。如果您想要一个正数,请使用sign-magnitude constructor :

new BigInteger(1, result)

我不清楚您为什么要实现自己的 MD5 哈希包装器。为什么不能将哈希值存储为 BINARY 或 BLOB?

关于java - 为什么我的大整数前面有一个减号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4633108/

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