Skip to content

Instantly share code, notes, and snippets.

@dealforest
Created March 1, 2012 13:39
Show Gist options
  • Star 21 You must be signed in to star a gist
  • Fork 8 You must be signed in to fork a gist
  • Save dealforest/1949873 to your computer and use it in GitHub Desktop.
Save dealforest/1949873 to your computer and use it in GitHub Desktop.
AES256 encryption on Android
package net.dealforest.sample.crypt;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.InvalidAlgorithmParameterException;
import java.security.spec.AlgorithmParameterSpec;
public class AES256Cipher {
public static byte[] encrypt(byte[] ivBytes, byte[] keyBytes, byte[] textBytes)
throws java.io.UnsupportedEncodingException,
NoSuchAlgorithmException,
NoSuchPaddingException,
InvalidKeyException,
InvalidAlgorithmParameterException,
IllegalBlockSizeException,
BadPaddingException {
AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivBytes);
SecretKeySpec newKey = new SecretKeySpec(keyBytes, "AES");
Cipher cipher = null;
cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, newKey, ivSpec);
return cipher.doFinal(textBytes);
}
public static byte[] decrypt(byte[] ivBytes, byte[] keyBytes, byte[] textBytes)
throws java.io.UnsupportedEncodingException,
NoSuchAlgorithmException,
NoSuchPaddingException,
InvalidKeyException,
InvalidAlgorithmParameterException,
IllegalBlockSizeException,
BadPaddingException {
AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivBytes);
SecretKeySpec newKey = new SecretKeySpec(keyBytes, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, newKey, ivSpec);
return cipher.doFinal(textBytes);
}
}
@vamshi245
Copy link

can u please provide the length of the input parameters byte[] ivBytes, byte[] keyBytes, byte[] textBytes

@dealforest
Copy link
Author

I'm sorry for late reply
I have sample code at the bottom of the mime blog.
I think I can understand if you look at it.

http://blog.dealforest.net/2012/03/ios-android-per-aes-crypt-connection/

@bradley-curran
Copy link

What's the block size on that cipher? Is it 16 by any chance?

@chrisdew
Copy link

The function name says AES256, but the cipher string is just "AES/CBC/PKCS5Padding" - how does that work?

@jemshit
Copy link

jemshit commented Jan 31, 2018

"Unsupported key size: 8 bytes". how to solve this @dealforest

@TabraizAhmad
Copy link

@dealforest the block size is of 16 byte, is there a way to make it 32byte? I prefer if u use AED128 instead of AES256 for this.

@arsh5620
Copy link

You have been such a help, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment