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 (e.g. 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, i.e. 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: standard padding modes like PKCS5Padding should be always supported (at least, that's how I interpret it).

Look at System.Windows.Forms.SendKeys.Send( string ). This allows key presses to be sent to the currently active application.

Update: just found this on MSDN forums: MSDN Forum

By : ng5000

SendKeys.Send will help you with that.

This video can help you solving your question :)
By: admin