AES加密类:
/** * Created by kjfjkal on 2017/2/27. */ public class AesUtil { private static byte[] result; /* * string加密流程 */ public static String encrypt(String key, String cleartext) { if (TextUtils.isEmpty(cleartext)) { return cleartext; } try { result = encrypt(key, cleartext.getBytes()); return Base64.encodeToString(result,0); } catch (Exception e) { e.printStackTrace(); } return Base64.encodeToString(result,0); } /* *转为byte */ public static byte[] encrypt(String key, byte[] clear) throws Exception { byte[] raw = getRawKey(key.getBytes()); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, skeySpec, new IvParameterSpec(new byte[cipher.getBlockSize()])); byte[] encrypted = cipher.doFinal(clear); return encrypted; } // 对密钥(key)经行处理() public static byte[] getRawKey(byte[] bytes)throws Exception { KeyGenerator KeyGenerator= javax.crypto.KeyGenerator.getInstance("AES"); SecureRandom SecureRandom=null; // 版本不同可能会导致安全数据类获取不到 if (android.os.Build.VERSION.SDK_INT >= 17) { SecureRandom = SecureRandom.getInstance("SHA1PRNG", "Crypto"); } else { SecureRandom = SecureRandom.getInstance("SHA1PRNG"); } SecureRandom.setSeed(bytes); KeyGenerator.init(192,SecureRandom); //256 bits or 128 bits,192bits //AES中128位密钥版本有10个加密循环,192比特密钥版本有12个加密循环,256比特密钥版本则有14个加密循环。 SecretKey skey = KeyGenerator.generateKey(); byte[] raw = skey.getEncoded(); return raw; } // }