简体   繁体   中英

Java Cipher - AES Padding Problem

I am using a AES cipher with a 16 byte block size.

If I try and encrypt a 16 byte string I have no problems, but any other length not a multiple of 16 is throwing an exception.

I know with 3-DES you can specify a padding type as part of the algorithm and it's handled with no extra work (eg DES/CBC/PKCS5Padding), but is there a way to specify this with AES?

Or do I need to pad the pytes manually to a multiple of 16, and then strip them when I decrypt? Here is an abbreviated code sample.

encrypt = Cipher.getInstance("AES", provider);
encrypt.init(Cipher.ENCRYPT_MODE, key) ;
byte[] encrypted = encrypt.doFinal(plainTxt.getBytes()) ;

Any and all replies appreciated!

Thanks in advance, Ciarán

It should work exactly the same with AES, ie the padding mode has to be specified together with the cipher. Which padding modes are implemented depends on the provider and should be described in its documentation.

According to the JCE documentation: http://java.sun.com/j2se/1.5.0/docs/guide/security/jce/JCERefGuide.html#AppA standard padding modes like PKCS5Padding should be always supported (at least, that's how I interpret it).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM