AES加密的使用 Hutool 工具包SecureUtil.aes

发布于:2025-02-11 ⋅ 阅读:(87) ⋅ 点赞:(0)

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);
    }
}

网站公告

今日签到

点亮在社区的每一天
去签到