保存到文件时,无法使用AES 256算法解密字符串

时间:2014-11-17 20:22:51

标签: java encryption cryptography aes padding

我想在CBC模式下使用AES 256算法。该算法在内存中运行良好(加密和解密),但如果我将加密的字符串保存到文件中,则解密算法会失败,但会出现以下异常:

javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher

我的解密逻辑

    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    cipher.init(Cipher.DECRYPT_MODE, key, iv);
    byte[] raw = Base64.decodeBase64(encryptedString);
    byte[] stringBytes = cipher.doFinal(raw);
    String decryptedString = new String(stringBytes, "UTF8");
    return decryptedString;

思想?

1 个答案:

答案 0 :(得分:1)

如果您的代码在内存中工作,那么您可以测试以下链:

  • 获取加密字节数组
  • 将其写入文件
  • 从文件中读取
  • 比较原始加密字节数组与从文件中读取

永远进行单元测试!