当前位置: 首页 > article >正文

SecureUtil.aes数据加密工具类

数据加密、解密工具类
包含map和vo的数据转换


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:

@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;

}

http://www.kler.cn/a/513052.html

相关文章:

  • 【Node.js]
  • mysql的测试方案
  • C++ ——— 模拟实现 vector 类
  • 小白爬虫——selenium入门超详细教程
  • 浅谈安科瑞电能质量监测和治理产品在分布式光伏电站的应用-安科瑞 蒋静
  • ent.SetDatabaseDefaults()
  • 通义万相:阿里巴巴 AI 生成式多模态平台解析与实战应用
  • 细说STM32F407单片机电源低功耗StandbyMode待机模式及应用示例
  • AI编程工具使用技巧:在Visual Studio Code中高效利用阿里云通义灵码
  • 如何提升IP地址查询数据服务的安全?
  • controlnet 多 condition 融合
  • 网安篇(一)日志分析——从给的登录日志中找出攻击IP和使用的用户名
  • 数据结构学习记录-树和二叉树
  • 堆的实现(C语言详解版)
  • yolo系列模型为什么坚持使用CNN网络?
  • LeetCode:37. 解数独
  • [Easy] leetcode-500 键盘行
  • Pix2Pix:图像到图像转换的条件生成对抗网络深度解析
  • 实现一个自己的spring-boot-starter,基于SQL生成HTTP接口
  • 分布式系统通信解决方案:Netty 与 Protobuf 高效应用
  • 如何打造高效同城O2O平台?外卖跑腿系统源码选型与开发指南
  • 新能源工厂如何借助防静电手环监控系统保障生产安全
  • 0基础跟德姆(dom)一起学AI 自然语言处理19-输出部分实现
  • .NET Core 中如何构建一个弹性HTTP 请求机制
  • Linux应用编程(五)USB应用开发-libusb库
  • 力扣-数组-350 两个数组的交集Ⅱ