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;

}
相关推荐
vx-Biye_Design1 小时前
SSM伴侣动物伴护星小程序06330-计算机课程设计、毕业设计
spring boot·后端·elasticsearch·小程序·架构·课程设计·idea
2分钟速写快排3 小时前
什么是 RAG?如何用 RAG 实现一个用户记忆?
前端·后端·ai编程
面向Google编程3 小时前
Apache Iceberg Variant 类型:v3 半结构化数据不再「二选一」
大数据·后端
lhldsg4 小时前
全民健身解决方案小程序开发:从0到1的技术实战
java·数据库·需求分析
jason成都4 小时前
Spring WebFlux 适配达梦新方案|dm‑r2dbc:Netty 异步传输的实验性 R2DBC 驱动
java·后端·spring
泡海椒4 小时前
内置SPI函数库详解:JQuick-Java Builtin工具类实战用法
java·开发语言·python
辰烨chenye4 小时前
LeetCode Hot 100 题解 · 二分篇
java·算法·leetcode
小羊没烦恼!5 小时前
Hello Web API系列教程——Web API与国际化
java·服务器·前端·javascript·php
北岛贰5 小时前
迷茫焦虑期,我做了一个带支付带官网的 AI 聊天虚拟恋人 App
前端·人工智能·后端
小荷才露尖尖角,早有蜻蜓立上头6 小时前
过滤器的4种创建方式
java