Created
August 5, 2013 12:36
-
-
Save sdogruyol/6155595 to your computer and use it in GitHub Desktop.
AES Encryption Singleton Class in Android Using CBC / PKCS7Padding
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.UnsupportedEncodingException; | |
import java.security.InvalidAlgorithmParameterException; | |
import java.security.InvalidKeyException; | |
import java.security.NoSuchAlgorithmException; | |
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 android.util.Base64; | |
public class CryptoHandler { | |
private static CryptoHandler instance = null; | |
private static byte[] KEY; | |
// Your IV Initialization Vector | |
private final static byte[] ivx = Globals.AES_IVX; | |
protected CryptoHandler() { | |
try { | |
//Your Secret Key | |
KEY = Globals.AES_SECRET_KEY.getBytes("UTF8"); | |
} catch (UnsupportedEncodingException e) { | |
e.printStackTrace(); | |
} | |
} | |
public static CryptoHandler getInstance() { | |
if (instance == null) { | |
instance = new CryptoHandler(); | |
} | |
return instance; | |
} | |
public String encrypt(String message) throws NoSuchAlgorithmException, | |
NoSuchPaddingException, IllegalBlockSizeException, | |
BadPaddingException, InvalidKeyException, | |
UnsupportedEncodingException, InvalidAlgorithmParameterException { | |
byte[] srcBuff = message.getBytes("UTF8"); | |
SecretKeySpec skeySpec = new SecretKeySpec(KEY, "AES"); | |
IvParameterSpec ivSpec = new IvParameterSpec(ivx); | |
Cipher ecipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); | |
ecipher.init(Cipher.ENCRYPT_MODE, skeySpec, ivSpec); | |
byte[] dstBuff = ecipher.doFinal(srcBuff); | |
String base64 = Base64.encodeToString(dstBuff, Base64.DEFAULT); | |
return base64; | |
} | |
public String decrypt(String encrypted) throws NoSuchAlgorithmException, | |
NoSuchPaddingException, InvalidKeyException, | |
InvalidAlgorithmParameterException, IllegalBlockSizeException, | |
BadPaddingException, UnsupportedEncodingException { | |
SecretKeySpec skeySpec = new SecretKeySpec(KEY, "AES"); | |
IvParameterSpec ivSpec = new IvParameterSpec(ivx); | |
Cipher ecipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); | |
ecipher.init(Cipher.DECRYPT_MODE, skeySpec, ivSpec); | |
byte[] raw = Base64.decode(encrypted, Base64.DEFAULT); | |
byte[] originalBytes = ecipher.doFinal(raw); | |
String original = new String(originalBytes, "UTF8"); | |
return original; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment