我正在尝试实现 DSA 签名算法,但我遇到了一个问题。我正在使用java.security
MessageDigest
该类,这是代码:
MessageDigest md;
md = MessageDigest.getInstance("SHA-1");
md.update(text.getBytes());
return new BigInteger(md.digest());
Text 是一个随机的 String 对象。问题是这段代码给了我哈希的负值,这是算法不接受的。难道我做错了什么?提前致谢。
PS 顺便说一句,我也尝试过不使用 BigIntegers 来实现 DSA,这可能吗?我没有找到小于 1024 和 160 的 L 和 N 值,所以我不知道应该取什么值以及应该使用什么散列函数。将非常感谢听到这些问题的答案。