AES Error: Given final block not properly padded

前端 未结 2 515
Happy的楠姐
Happy的楠姐 2021-01-01 07:57

I need help with this error: Given final block not properly padded. As you can see from the title, I am working with AES.

Here is the code of line where is error:

2条回答
  •  无人及你
    2021-01-01 08:38

    Per your comment, you are pretty close to getting the crypto working.

    You need to move the IV generation code from your encryption/decryption methods to somewhere else, like so

    public AlgorithmParameterSpec getIV() {
    AlgorithmParameterSpec ivspec;
    byte[] iv = new byte[cipher.getBlockSize()];
    new SecureRandom().nextBytes(iv);
    ivspec = new IvParameterSpec(iv);
    }
    

    then pass that ivspec into both the encrypt and decrypt methods (making them look like encrypt(String,AlgorithmParameterSpec)), so that you have the same iv for both encryption and decryption.

    Also, don't call printBase64Binary on the decryptedByteArray, instead call new String(decryptedByteArray, "UTF-8")

提交回复
热议问题