我正在尝试实现DSA签名算法,但有一个问题困扰着我。我正在使用java.security
的MessageDigest
类,以下是代码:
MessageDigest md;
md = MessageDigest.getInstance("SHA-1");
md.update(text.getBytes());
return new BigInteger(md.digest());
文本是一个随机的字符串对象。问题在于这段代码给我负数的哈希值,而算法不接受负数。我做错了什么吗?谢谢。
顺便说一下,我也尝试过实现DSA而不使用BigIntegers,这是可能的吗?我没有找到小于1024和160的L和N值,所以我不知道应该取什么值和使用什么哈希函数。非常感谢回答这些问题。