Java AES解密错误,加密工作正常

时间:2013-10-10 02:32:16

标签: java algorithm encryption cryptography aes

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

这是我的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]

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

谢谢

抱歉,忘了在这里添加我的加密课程。

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

1 个答案:

答案 0 :(得分:1)

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

new String(decryptAES(text1), "UTF-8");