gpt4 book ai didi

java - SHA 哈希函数给出负输出

转载 作者:搜寻专家 更新时间:2023-11-01 02:15:49 25 4
gpt4 key购买 nike

我正在尝试实现 DSA 签名算法,但遇到了一个问题。我正在使用 java.security MessageDigest 类,代码如下:

MessageDigest md;
md = MessageDigest.getInstance("SHA-1");
md.update(text.getBytes());
return new BigInteger(md.digest());

Text 是一个随机的 String 对象。问题是这段代码给了我哈希的负值,算法不接受这个值。难道我做错了什么?提前致谢。

附言顺便说一句,我也尝试过不使用 BigIntegers 来实现 DSA,这可能吗?我没有找到小于 1024 和 160 的 L 和 N 值,所以我不知道应该取什么值以及应该使用什么散列函数。将非常感谢听到这些问题的答案。

最佳答案

MessageDigest md;
md = MessageDigest.getInstance("SHA-1");
md.update(text.getBytes());
return new BigInteger(1, md.digest()); // use this 1 to tell it is positive.

然后您可以使用以下方法将您的散列转换为字符串:

String hash = biginteger.toString(16);

然后可选择在前导零前添加。

String zeros = String.format("%032d", 0);
hash = zeros.substring(hash.length()) + hash;

关于java - SHA 哈希函数给出负输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6357234/

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