我有一个关于在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());
}
答案 0 :(得分:1)
Arrays.toString(byte [] a)“返回指定数组内容的字符串表示形式。”它不会将字节数组转换为String。而是尝试使用:
new String(decryptAES(text1), "UTF-8");