在我的程序中,我必须使用AES密钥加密用户输入的可选文本,然后使用RSA公钥加密该密钥,当然稍后使用私钥对其进行解密。一切正常但我无法工作的是从最后输入的字符串生成哈希值。 我一直在谷歌搜索几天,但我找不到我做错了什么。一个
这是我的代码,但不是整个代码,只是我遇到麻烦的部分 这就是我创建String inputText1的地方,用户可以在其中输入他喜欢的内容。
Cipher aesCipher = Cipher.getInstance("AES");
aesCipher.init(Cipher.ENCRYPT_MODE, aesSecretKey);
String inputText1 = JOptionPane.showInputDialog("Enter a secret message: ");
byte[] encrypt = aesCipher.doFinal(inputText1.getBytes());
然后我再次使用该字符串的messagedigest,但它不起作用,并且不打印字符串的任何哈希值。可能有什么不对?我在考虑字节大小,但它不像我使用大量的内存。有什么建议吗?
public static void getHashfromString(String inputText1) throws NoSuchAlgorithmException
{
MessageDigest mdigest = MessageDigest.getInstance("MD5");
mdigest.update(inputText1.getBytes());
byte[] HashBytes = mdigest.digest();
JOptionPane.showMessageDialog(null,"HashBytes" + new BigInteger(HashBytes));
System.exit(0);
}
答案 0 :(得分:0)
如果您希望将hashvalue变为BigInteger,请使用:
BigInteger biginteger = new BigInteger(javax.xml.bind.DatatypeConverter.printHexBinary(HashBytes), 16)
但是,如果你想要md5必须是十六进制并变成一个字符串:
String hash = javax.xml.bind.DatatypeConverter.printHexBinary(bytes).toString();
如果我说错了,那是因为我现在有点高。