Java AES解密 - 无法解密字符串

时间:2011-10-16 05:35:24

标签: java string encryption aes

  

可能重复:
  Java AES Encrypt Entire String

我遇到了一个小问题。出于某种原因,我无法使用加密它们的相同方法解密某些字符串。例如,我正在使用此代码进行解密:

        SecretKeySpec key = new SecretKeySpec(salt.getBytes(), "AES");
    Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "SunJCE");
    cipher.init(Cipher.DECRYPT_MODE, key);
    String result = new String(cipher.doFinal(message));

    System.out.println("Decrypted:" + result);

无论如何,当盐是“1231231231231231”时,我试图解密的消息是“读取”。我收到这个错误:

Exception in thread "main" javax.crypto.BadPaddingException: Given final block not properly padded

但加密器(以相同的方式工作)表示加密值为

I¡?Þd↨Ú#à, 7êLO* 

如何解决此问题或避免用户输入此类字符串? Thansk

1 个答案:

答案 0 :(得分:0)

解决方案:不要将其存储在字符串中。

您对Cipher.doFinal的调用应存储在byte数组(byte[])中,您对解密的输入也应该是byte数组。如果您正在进行String输入,请使用.getBytes();在为输出创建String时,请使用new String(myArray)