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

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

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

相关文章:

  • 【LeetCode Hot100 二分查找】搜索插入位置、搜索二维矩阵、搜索旋转排序数组、寻找两个正序数组的中位数
  • uniapp中判断设备类型
  • Fabric部署-docker安装
  • UDP接收和断线重连代码注入案例
  • 下载word报表
  • 【时时三省】(C语言基础)常见的动态内存错误2
  • MagicQuill: AI平板智能画师-AI智能交互式图像编辑系统
  • 二维码文件在线管理系统-收费版
  • C# OpenCV机器视觉:姿态估计
  • UE4_用户控件_3_用户控件输入数据的方法
  • javaEE-网络原理-2网络编程
  • 网安数学基础期末复习
  • 单源最短路径【东北大学oj数据结构12-2/3】C++
  • 【JAVA】java中将一个list进行拆解重新组装
  • Kafka集群的常用命令与策略
  • 从室内到室外:移动机器人的环境适应之旅
  • 企业级网络运维管理系统:构建高效与稳定的基石
  • 电化学气体传感器在物联网中的精彩表现
  • 文本表征的Scaling Laws:Scaling Laws For Dense Retrieval
  • 02.01、移除重复节点
  • 【Ubuntu】安装华为的MindSpore
  • 2、pycharm常用快捷命令和配置【持续更新中】
  • Jetpack Compose 学习笔记(一)—— 快速上手
  • 智能边缘计算×软硬件一体化:开启全场景效能革命新征程(企业开发者作品)
  • kafka小实站
  • SASS 简化代码开发的基本方法