0

我有一个关于在 AES 中使用 Decrypt 的问题。我编写了加密文本的相同程序。

这是我的解密课程。(我使用 16 字节的密钥)。

public static byte[] decryptAES(String message) throws Exception 
{  
String secretKey = "JohnIsAwesome!1!";
SecretKeySpec key = new SecretKeySpec(secretKey.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, key);
return cipher.doFinal(message.getBytes());  
}

这是我的主要内容。加密工作完美。

public static void main (String[] args) throws Exception
{
    String text = "MySuperSecretPassword!";
    //Ecrypt the Text, then print it out in an array
    String encryptText = Arrays.toString(encryptAES(text));
    System.out.println("Encrypted Message"+ encryptText);

    //Decrypt the Text, then print it out in an array
    String decryptText = Arrays.toString(decryptAES(text1));
    System.out.println("Decrypted Message"+ decryptText);

}

加密输出:

加密消息[16, 69, 84, 118, 68, -36, -67, 125, -86, -106, -4, 24, -59, -77, -41, -32, -37, 104, - 44、-42、112、87、87、101、28、99、60、-27、34、-88、-17、-114]

如果有人对为什么解密不起作用有任何想法,将不胜感激。我一直在用头撞墙。

谢谢

抱歉,这里也忘记添加我的 Encrypt 类了。

public static byte[] encryptAES(String message) throws Exception
{
    String secretKey = "JohnIsAwesome!1!";
    SecretKeySpec key = new SecretKeySpec(secretKey.getBytes(), "AES");
    Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.ENCRYPT_MODE, key);
    return cipher.doFinal(message.getBytes());
}
4

1 回答 1

1

Arrays.toString(byte[] a) "返回指定数组内容的字符串表示形式。它不会将字节数组转换为字符串。而是尝试使用:

new String(decryptAES(text1), "UTF-8");
于 2013-10-10T04:13:24.947 回答