Back to project page base-android-utils.
The source code is released under:
Apache License
If you think the Android project base-android-utils listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package me.pc.mobile.helper.v14.crypt; //from w ww. j av a 2s . com import java.io.UnsupportedEncodingException; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.spec.SecretKeySpec; /** * AES?????? * * @author?junning.li * @since?2011-6-1 ????08:16:22 * @version: */ public class AES { /** * AES???? * * @param data * ???????? * @param key * ????? * @return */ public static byte[] encrypt(byte[] data, byte[] key) { CheckUtils.notEmpty(data, "data"); CheckUtils.notEmpty(key, "key"); if (key.length != 16) { throw new RuntimeException( "Invalid AES key length (must be 16 bytes)"); } try { SecretKeySpec secretKey = new SecretKeySpec(key, "AES"); byte[] enCodeFormat = secretKey.getEncoded(); SecretKeySpec seckey = new SecretKeySpec(enCodeFormat, "AES"); Cipher cipher = Cipher .getInstance(ConfigureEncryptAndDecrypt.AES_ALGORITHM);// ?????? cipher.init(Cipher.ENCRYPT_MODE, seckey);// ???? byte[] result = cipher.doFinal(data); return result; // ?? } catch (Exception e) { throw new RuntimeException("encrypt fail!", e); } } /** * AES???? * * @param data * ????? * @param key * ???? * @return */ public static byte[] decrypt(byte[] data, byte[] key) { CheckUtils.notEmpty(data, "data"); CheckUtils.notEmpty(key, "key"); if (key.length != 16) { throw new RuntimeException( "Invalid AES key length (must be 16 bytes)"); } try { SecretKeySpec secretKey = new SecretKeySpec(key, "AES"); byte[] enCodeFormat = secretKey.getEncoded(); SecretKeySpec seckey = new SecretKeySpec(enCodeFormat, "AES"); Cipher cipher = Cipher .getInstance(ConfigureEncryptAndDecrypt.AES_ALGORITHM);// ?????? cipher.init(Cipher.DECRYPT_MODE, seckey);// ???? byte[] result = cipher.doFinal(data); return result; // ?? } catch (Exception e) { throw new RuntimeException("decrypt fail!", e); } } public static String encryptToBase64(String data, String key) { try { byte[] valueByte = encrypt( data.getBytes(ConfigureEncryptAndDecrypt.CHAR_ENCODING), key.getBytes(ConfigureEncryptAndDecrypt.CHAR_ENCODING)); return new String(Base64.encode(valueByte)); } catch (UnsupportedEncodingException e) { throw new RuntimeException("encrypt fail!", e); } } public static String decryptFromBase64(String data, String key) { try { byte[] originalData = Base64.decode(data.getBytes()); byte[] valueByte = decrypt(originalData, key.getBytes(ConfigureEncryptAndDecrypt.CHAR_ENCODING)); return new String(valueByte, ConfigureEncryptAndDecrypt.CHAR_ENCODING); } catch (UnsupportedEncodingException e) { throw new RuntimeException("decrypt fail!", e); } } public static String encryptWithKeyBase64(String data, String key) { try { byte[] valueByte = encrypt( data.getBytes(ConfigureEncryptAndDecrypt.CHAR_ENCODING), Base64.decode(key.getBytes())); return new String(Base64.encode(valueByte)); } catch (UnsupportedEncodingException e) { throw new RuntimeException("encrypt fail!", e); } } public static String decryptWithKeyBase64(String data, String key) { try { byte[] originalData = Base64.decode(data.getBytes()); byte[] valueByte = decrypt(originalData, Base64.decode(key.getBytes())); return new String(valueByte, ConfigureEncryptAndDecrypt.CHAR_ENCODING); } catch (UnsupportedEncodingException e) { throw new RuntimeException("decrypt fail!", e); } } public static byte[] genarateRandomKey() { KeyGenerator keygen = null; try { keygen = KeyGenerator .getInstance(ConfigureEncryptAndDecrypt.AES_ALGORITHM); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(" genarateRandomKey fail!", e); } SecureRandom random = new SecureRandom(); keygen.init(random); Key key = keygen.generateKey(); return key.getEncoded(); } public static String genarateRandomKeyWithBase64() { return new String(Base64.encode(genarateRandomKey())); } }