回复
Android数据加密之AES加密
kekenai
发布于 2020-9-22 11:48
浏览
0收藏
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称 Rijndael 加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的 DES,已经被多方分析且广为全世界所使用。简单说就是 DES 的增强版,比 DES 的加密强度更高。
AES 与 DES 一样,一共有四种加密模式:电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)。关于加密模式的介绍,推荐这篇文章:高级加密标准AES的工作模式(ECB、CBC、CFB、OFB)
直接给代码:
加密(byte级别)
/* 加密使用的 key */
private static final String AES_KEY = "KUbHwTqBy6TBQ2gN";
/* 加密使用的 IV */
private static final String AES_IV = "pIbF6GR3XEN1PG05";
/**
* AES 加密
*
* @param content 待加密内容
* @param key 密钥
* @return 加密的数据
*/
public static byte[] encryptAES(byte[] content, byte[] key) {
try {
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
// AES 是加密方式, CBC 是工作模式, PKCS5Padding 是填充模式
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
// IV 是初始向量,可以增强密码的强度
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, new IvParameterSpec(AES_IV.getBytes()));
return cipher.doFinal(content);
} catch (Exception e) {
logger.error(e);
}
return null;
}
解密 (byte级别)
/**
* AES 解密
*
* @param content 待解密内容
* @param key 密钥
* @return 解密的数据
*/
public static byte[] decryptAES(byte[] content, byte[] key) {
try {
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, new IvParameterSpec(AES_IV.getBytes()));
return cipher.doFinal(content);
} catch (Exception e) {
logger.error(e);
}
return null;
}
加密(String级别)
private final static String TOKEN_KEY = "91a29fa7w46d8x41";
public static String encrypt(String plain) {
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
AlgorithmParameterSpec ivSpec = new IvParameterSpec(new byte[16]);
SecretKeySpec newKey = new SecretKeySpec(TOKEN_KEY.getBytes(), "AES");
cipher.init(Cipher.ENCRYPT_MODE, newKey, ivSpec);
return new String(cipher.doFinal(plain.getBytes()));
} catch (Exception e) {
Ln.e(e);
return null;
}
}
解密(String级别)
public static String decrypt(String encoded) {
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
AlgorithmParameterSpec ivSpec = new IvParameterSpec(new byte[16]);
SecretKeySpec newKey = new SecretKeySpec(TOKEN_KEY.getBytes(), "AES");
cipher.init(Cipher.DECRYPT_MODE, newKey, ivSpec);
return new String(cipher.doFinal(encoded.getBytes()));
} catch (Exception e) {
Ln.e(e);
return null;
}
}
作者:ai-exception
来源:CSDN
分类
赞
收藏
回复
相关推荐