持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天,点击查看活动详情
每日英语:
Courage is the ladder on which all the other virtues mount.
翻译:勇气是一切美德攀登的阶梯。 ——克莱尔·布思·卢斯
AES算法下载
java 中的 AES 秘钥为256bit 算法执行时,会遇到 Illegal key size or default parameters 报错,原因是因为本地没有对应的算法库,需要下载对应JDK版本的算法库。
JDK8 jar 包下载地址:
JDK7 jar 包下载地址:
JDK6 jar 包下载地址:
下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。 如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件。 如果安装了JDK,还要将两个jar文件也放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件。
AES算法实战
使用AES加密、解密,他们的执行过程都是一样的,步骤如下:
1:加载加密解密算法处理对象(包含算法、秘钥管理)
2:根据不同算法创建秘钥
3:设置加密模式(无论是加密还是解析,模式一致)
4:初始化加密配置
5:执行加密/解密
在mall-common中引入算法依赖包
<!--算法依赖包-->
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk16</artifactId>
<version>1.46</version>
</dependency>
我们编写一个类com.xz.mall.util.AESUtil,既可以实现加密,也可以实现解密,代码如下:
/****
* AES加密
* @param buffer : 明文/密文
* @param appsecret : 秘钥,16位
* @param mode : 处理方式 1:加密,2:解密
*/
public static byte[] encryptAndDecrypt(byte[] buffer, String appsecret,Integer mode) throws Exception {
//1、加载加密处理对象,该对象会提供加密算法、秘钥生成、秘钥转换、秘钥管理等功能
Security.addProvider(new BouncyCastleProvider());
//2、创建秘钥对象,并指定算法
SecretKeySpec secretKey = new SecretKeySpec(appsecret.getBytes("UTF-8"),"AES");
//3、设置Cipher的加密模式,AES/ECB/PKCS7Padding BC指定算法对象(BouncyCastleProvider)
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding","BC");
//4、初始化加密配置
cipher.init(mode,secretKey);
//5、执行加密/解密
return cipher.doFinal(buffer);
}
此处的秘钥为16byte(128bit),秘钥的长度可以为128/192/256 bit,我们测试如下:
public static void main(String[] args) throws Exception {
//明文
String content = "SpringCloud Alibaba!";
//16位秘钥
String key ="1616161616161616";
//加密
byte[] encrypt = encryptAndDecrypt(content.getBytes("UTF-8"), key, 1);
System.out.println("加密后的密文:"+Base64Util.encode(encrypt));
//解密
byte[] decrypt = encryptAndDecrypt(encrypt, key, 2);
System.out.println(new String(decrypt,"UTF-8"));
}
测试效果如下:
加密后的密文:y5wS5hE9rAPUu2//IDma20JhTWzekMCJ0+E0GP5xmaQ=
SpringCloud Alibaba!
我们如果使用256bit的秘钥,可以将当前秘钥转换成MD5值,MD5值长度为32,大小为256bit,正好满足256bit的秘钥,测试代码如下:
测试效果如下:
加密后的密文:B3s+4boCopYMEZKsFMue9UFBMdjkrNCyE2sMS9KXWEk=
SpringCloud Alibaba!
总结
本篇主要讲述了AES算法下载和ASE算法实战,有兴趣的可以自己尝试下载测试一下。