SecureUtil.aes数据加密工具类

数据加密、解密工具类

包含map和vo的数据转换

bash 复制代码
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.crypto.SecureUtil;

import java.util.HashMap;
import java.util.Map;

/**
 * 数据解析
 *
 */
public class ParamUtils {

    /**
     * 数据解密
     *
     * @param params    参数
     * @param secretKey key
     * @return 结果
     */
    public static BatchApprovalParamVO dataDecrypt(String params, String secretKey) {
        // AES密⽂解密 params = batchNo=HJ-PLSP-202412-00044&approvalType=02&userId=114&tenantId=2
        String decrypt = SecureUtil.aes(secretKey.getBytes()).decryptStr(params);
        Map<String, Object> paramsMap = new HashMap<>();
        String[] pairs = decrypt.split(LOGICAL);
        for (String pair : pairs) {
            String[] keyValue = pair.split(EQUAL, 2);
            if (keyValue.length > 1) {
                paramsMap.put(keyValue[0], keyValue[1]);
            } else {
                paramsMap.put(keyValue[0], "");
            }
        }
        return BeanUtil.mapToBean(paramsMap, BatchApprovalParamVO.class, true);
    }

    /**
     * 数据加密
     *
     * @param vo    数据
     * @param secretKey key
     * @return 结果
     */
    public static String dataEncrypt(BatchApprovalParamVO vo, String secretKey) {
        // AES密⽂加密 params = batchNo=HJ-PLSP-202412-00044&approvalType=02&userId=114&tenantId=2
        Map<String, Object> map = BeanUtil.beanToMap(vo);
        StringBuilder sb = new StringBuilder();
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            if (sb.length() > 0) {
                sb.append(LOGICAL);
            }
            sb.append(entry.getKey()).append(EQUAL).append(entry.getValue());
        }
        return SecureUtil.aes(secretKey.getBytes()).encryptHex(sb.toString());
    }

}

实体类VO:

bash 复制代码
@Data
public class BatchApprovalParamVO {

    @Schema(description = "审批批次号")
    private String batchNo;

    @Schema(description = "审批类型:通过、驳回")
    private String approvalType;

    @Schema(description = "审批人id")
    private Long userId;

    @Schema(description = "租户id")
    private Long tenantId;

}
相关推荐
面试鸭5 分钟前
科大讯飞,你好大方。。。
java·计算机·职场和发展·求职招聘
韩立学长39 分钟前
【开题答辩实录分享】以《智慧物业管理系统的设计与实现》为例进行答辩实录分享
java·后端·mysql
10km42 分钟前
java:json-path支持fastjson作为JSON解析提供者的技术实现
java·json·fastjson·json-path
小张程序人生1 小时前
深入理解SpringSecurity从入门到实战
java
d***95621 小时前
springboot接入deepseek深度求索 java
java·spring boot·后端
iOS开发上架哦1 小时前
Swift中对象实例方法名混淆问题详细解决方法
后端
零日失眠者1 小时前
【文件管理系列】003:重复文件查找工具
后端·python
CoderYanger1 小时前
C.滑动窗口-越短越合法/求最长/最大——2958. 最多 K 个重复元素的最长子数组
java·数据结构·算法·leetcode·哈希算法·1024程序员节
哈哈哈笑什么1 小时前
多级缓存框架(Redis + Caffeine)完整指南
redis·后端
哈哈哈笑什么1 小时前
分布式事务实战:订单服务 + 库存服务(基于本地消息表组件)
分布式·后端·rabbitmq