AES加密的使用 Hutool 工具包SecureUtil.aes
SecureUtil.aes 是 Hutool 工具包中提供的一个用于 AES 加密的静态方法。
引入 Hutool 工具包
首先,你需要在项目中引入 Hutool 工具包。如果你使用的是 Maven,可以在 pom.xml 文件中添加以下依赖:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.20</version>
</dependency>
调用 SecureUtil.aes 方法
SecureUtil.aes 方法有多种重载形式,但最常用的形式是接受一个字节数组作为密钥来创建一个 AES 加密对象。
以下是一个简单的示例:
import cn.hutool.crypto.SecureUtil;
import java.util.Map;
public class HutoolAesExample {
public static void main(String[] args) {
// 待加密的明文
String param = "batchNo=HJ-PLSP-202412-00044&approvalType=02&userId=114&tenantId=2";
// 密钥(16字节、24字节或32字节)"1A0F1ABC44BA4A53AFB2DD6F7E155EA9"
// encryptHex:加密 成一个字符串
String decryptStr = SecureUtil.aes("1A0F1ABC44BA4A53AFB2DD6F7E155EA9".getBytes()).encryptHex(param);
System.out.println(decryptStr);
// decryptStr:解密 成一个字符串
String decrypt = SecureUtil.aes("1A0F1ABC44BA4A53AFB2DD6F7E155EA9".getBytes()).decryptStr(decryptStr);
System.out.println(decrypt);
// 将数据转为map
Map<String, String> paramsMap = ParamParserUtils.parseParams(decrypt);
String approvalBatchNo = paramsMap.get("batchNo");
String approvalType = paramsMap.get("approvalType");
Long userId = Long.valueOf(paramsMap.get("userId"));
Long tenantId = Long.valueOf(paramsMap.get("tenantId"));
}
}
注:使用SecureUtil.aes加密和解密,必须使用同一个对象或者同一个加密的key,否则无法解密。
ParamParserUtils工具类
将url?后面跟的参数(a=11&b=22)格式为map
import java.util.HashMap;
import java.util.Map;
/**
* 数据解析
*
* @author zkg
* @since 2024-12-20 10:53:18
*/
public class ParamParserUtils {
/**
* 解析数据
*
* @param params 数据
* @return 结果
*/
public static Map<String, String> parseParams(String params) {
Map<String, String> paramsMap = new HashMap<>();
String[] pairs = params.split("&");
for (String pair : pairs) {
String[] keyValue = pair.split("=", 2);
if (keyValue.length > 1) {
paramsMap.put(keyValue[0], keyValue[1]);
} else {
paramsMap.put(keyValue[0], "");
}
}
return paramsMap;
}
public static void main(String[] args) {
String query = "batchNo=HJ-MBA-20241128-00001&approvalType=pass&userId=1&tenantId=1";
Map<String, String> paramsMap = parseParams(query);
System.out.println(paramsMap);
}
}