android 数据加密AES
2017-07-14 11:00
351 查看
AES是目前对称加密中最流行算法之一。随着大数据越来越重要,信息安全随之人们开始关注起来。废话不多说。讲一讲AES加密。
public static byte[] encrypt(String content, String password) {
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES"); //
创建AES的Key生产者
kgen.init(128, new SecureRandom(password.getBytes())); //在安全性要求比较高的场合,应当使用
//SecureRandom
SecretKey secretKey = kgen.generateKey(); //生成一个密钥
byte[] enCodeFormat = secretKey.getEncoded(); //
返回编码格式的密钥
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES"); //
转换为AES专用密钥
Cipher cipher = Cipher.getInstance("AES");// 创建密码器
byte[] byteContent = content.getBytes("utf-8");
cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化加密模式
byte[] result = cipher.doFinal(byteContent); //加密
return result;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}
下面是解密的过程基本都差不多
public static byte[] decrypt(byte[] content, String password) {
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128, new SecureRandom(password.getBytes()));
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher = Cipher.getInstance("AES");// 创建密码器
cipher.init(Cipher.DECRYPT_MODE, key);// 初始化
byte[] result = cipher.doFinal(content);
return result; // 加密
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}
主要是种子一定是一样的。才能正确的加解密。而且如果是用字节转换为字符串形式加解密的话,会报异常。这里就要用到二进制转换为16进制的,
然后间接转换为2进制的解密。
public static byte[] encrypt(String content, String password) {
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES"); //
创建AES的Key生产者
kgen.init(128, new SecureRandom(password.getBytes())); //在安全性要求比较高的场合,应当使用
//SecureRandom
SecretKey secretKey = kgen.generateKey(); //生成一个密钥
byte[] enCodeFormat = secretKey.getEncoded(); //
返回编码格式的密钥
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES"); //
转换为AES专用密钥
Cipher cipher = Cipher.getInstance("AES");// 创建密码器
byte[] byteContent = content.getBytes("utf-8");
cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化加密模式
byte[] result = cipher.doFinal(byteContent); //加密
return result;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}
下面是解密的过程基本都差不多
public static byte[] decrypt(byte[] content, String password) {
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128, new SecureRandom(password.getBytes()));
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher = Cipher.getInstance("AES");// 创建密码器
cipher.init(Cipher.DECRYPT_MODE, key);// 初始化
byte[] result = cipher.doFinal(content);
return result; // 加密
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}
主要是种子一定是一样的。才能正确的加解密。而且如果是用字节转换为字符串形式加解密的话,会报异常。这里就要用到二进制转换为16进制的,
然后间接转换为2进制的解密。
相关文章推荐
- Android数据传输加密(二):AES加密
- android开发 文件数据的AES-128方式加密解密
- Android本地数据AES加密,使用AndroidKeyStore
- Android数据加密DES、3DES、AES
- Android数据加密之Aes加密
- [置顶] 数据传输加密——非对称加密算法RSA+对称算法AES(适用于java,android和Web)
- java、android、ios、js数据传递加密算法之AES加密
- Android数据加密之Aes加密
- Android传输数据时Aes加密解密详解
- android数据加密(二)AES加密
- android 使用Aes加密数据
- Android数据加密之Aes加密
- AES加密解密的数据和android的不一样效果?
- Android 数据加密之RSA + AES
- 数据传输加密:非对称加密算法RSA+对称算法AES(适用于java,android和Web)
- [Android]AES加密解密的实现
- 利用AES轻松加密数据的代码例子
- 一种基于随机数组so库的Android数据资源硬加密方法 草稿
- android开发 java与c# 兼容AES加密
- 使用AES加密进行Android的SharedPreferences存储