AES Error: Given final block not properly padded

前端 未结 2 517
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:15

    You have two problems, first you encode the output into a hex string but don't decode back from it in the decode method. Second you generate an random IV but don't use it again to decode.

    public byte[] encrypt(String plainText) throws Exception {
       byte[] iv = new byte[cipher.getBlockSize()];    
       AlgorithmParameterSpec spec = new IvParameterSpec(iv);
       cipher.init(Cipher.ENCRYPT_MODE, key, spec);
       return cipher.doFinal(plainText.getBytes());
    }
    
    public String decrypt(byte[] cryptedText) throws Exception {
       byte[] iv = new byte[cipher.getBlockSize()];
       AlgorithmParameterSpec spec = new IvParameterSpec(iv);
       cipher.init(Cipher.DECRYPT_MODE, key, spec);
       // decrypt the message
       byte[] decrypted = cipher.doFinal(cryptedText);
       decryptedText = new String(decrypted, "UTF-8");
       return decryptedText;
    }
    
    
    
    String decryptedText = aes.decrypt(aes.encrypt(message)).toString();     
    

提交回复
热议问题