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:
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();