使用Hutool进行AES加密不支持JDK1.6问题解决方案

首先介绍一下Hutool,借用其官网的一段话:

引用自Hutool官网
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;
Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。

使用Hutool的jar包可比较方便的进行AES加密,但是目前Hutool的各版本最低支持jdk1.7,对于jdk1.6环境的程序就比较尴尬了,下面介绍一个替代方案。

使用Hutool的jar进行aes加密的代码为:

public static String encByAES(String data) {
		String key = "XXXXXXXXXXX";
		SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, key.getBytes());
		byte[] strByte = aes.encrypt(data);
		return Base64.encode(strByte);
	}

这个方式在jdk1.8环境下没有问题,由于Hutool不支持jdk1.6,jdk1.6环境下程序想用aes加密采用如下方式:

public static String Encrypt(String sSrc) throws Exception {
		String sKey = "XXXXXXXX";
		
        byte[] raw = sKey.getBytes("utf-8");
        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"算法/模式/补码方式"
        cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
        byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));
        return new BASE64Encoder().encode(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。
    }

第一次执行以上代码大概率会报如下错误:

这里是引用
Caused by: java.security.InvalidKeyException: Illegal key size or default parameters

报错原因为:美国限制 aes 256位 以上加密出口,于是Sun通过权限文件(local_policy.jar, US_export_policy.jar)做了相应限制。
Oracle在其官方网站上提供了无政策限制权限文件(Unlimited Strength Jurisdiction Policy Files),只需要将其部署在JRE环境中,就可以解决限制问题。

jar包下载连接:
oracle官网版:
jce_policy-6.zip
csdn版:
https://download.youkuaiyun.com/download/u011497507/87270593

下载对应版本的jce包,解压并放到 jdk 文件夹下的 /jre6/lib/security 文件夹中即可,我的路径为:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值