当前位置: 代码迷 >> java >> 无法生成哈希值
  详细解决方案

无法生成哈希值

热度:64   发布时间:2023-07-17 20:01:36.0

在我的程序中,我必须使用AES密钥加密用户输入的可选文本,然后使用RSA公共密钥加密该密钥,然后当然要使用私钥对其解密。 所有有效的方法,但我无法解决的是从最后输入的字符串生成哈希值。 我已经搜寻了几天,但是我找不到我做错了什么。 一种

这是我的代码,而不是全部代码,只是我遇到麻烦的部分,也就是我在其中创建字符串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中,我再次使用该字符串,但是它不起作用并且不打印该字符串的任何哈希值。 有什么事吗 我在考虑字节大小,但它不像im占用大量内存。 有什么建议吗?

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);
}

如果要将哈希值转换为BigInteger,请使用:

BigInteger biginteger = new BigInteger(javax.xml.bind.DatatypeConverter.printHexBinary(HashBytes), 16)

但是,如果您希望md5必须为十六进制并变成字符串:

String hash = javax.xml.bind.DatatypeConverter.printHexBinary(bytes).toString();

万一我说错了,那是因为我现在有点高。

  相关解决方案