news 2026/4/19 4:13:03

Hutool工具类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hutool工具类

Hutool工具类

  • UUID
  • SecureUtil

Hutool 是一款由国人开发的轻量级 Java 通用工具类库,核心目标是简化 Java 开发流程,它对开发中高频使用的字符串处理(StrUtil)、日期时间操作(DateUtil)、集合处理(CollUtil)、文件 IO(FileUtil)、加密解密(SecureUtil)、UUID / 分布式 ID 生成(IdUtil)、HTTP 请求(HttpUtil)等功能进行了轻量化、易用化封装,既解决了原生 API 调用繁琐(如 SimpleDateFormat 线程不安全、IO 流需手动关闭、加密算法初始化复杂)、功能单一的痛点,又提供了简洁的静态方法调用方式,一行代码即可完成常见操作,且整体轻量无冗余依赖、无侵入性,是 Java 开发中提升编码效率的实用工具库。

导入依赖

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.2.4</version></dependency>

最常用的模块包括:StrUtil(字符串)、DateUtil(日期)、CollUtil(集合)、FileUtil(文件)、HttpUtil(HTTP)、SecureUtil(加密)。

下面主要介绍 Hutool 库的 UUID 和 SecureUtil 工具类

UUID

UUID(Universally Unique Identifier,通用唯一识别码)本质是 128 位的数字标识符,其核心价值在于能在分布式系统中生成全局唯一的标识,无需依赖中央服务器分配,从根本上避免了多节点场景下的 ID 重复问题。

JDK 原生 API 生成 UUID 存在三大痛点:
格式固定:默认生成的 UUID 带 “-” 分隔符,而数据库主键、缓存 Key 等多数业务场景需手动去除分隔符;
形态单一:仅支持标准格式生成,无法直接产出纯数字、无符号等业务常用的 UUID 变体;
调用繁琐:需多步处理才能满足实际开发需求。

Hutool 框架的 cn.hutool.core.util.IdUtil 工具类针对上述痛点做了全面封装,既简化了调用流程(一行代码即可生成),又扩展了 UUID 的输出形态(支持标准带分隔符、无分隔符、纯数字等),还优化了生成性能(如fastUUID方法),是分布式场景下生成唯一标识的高效工具。

以下是最常用的生成方法:

  • 生成标准 UUID
    方法:IdUtil.randomUUID()
    特点:生成 JDK 原生的标准 UUID,格式为 8-4-4-4-12,包含横线,基于随机数生成;
  • 生成简化版 UUID
    方法:IdUtil.simpleUUID()
    特点:生成无横线的 UUID(本质是把randomUUID()的横线去掉),字符串长度 32 位,适合存储、传输;
  • 生成基于 MAC 地址的 UUID(有序 UUID)
    方法 1:IdUtil.fastUUID()(带横线)
    方法 2:IdUtil.fastSimpleUUID()(无横线)
    特点:基于 MAC 地址 + 时间戳生成,相比随机 UUID 更有序,生成速度更快,适合对 UUID 有序性有要求的场景。

SecureUtil

SecureUtil 是 Hutool 核心工具类之一,专门封装了 Java 原生的加密解密 API,核心目标是简化加密操作,它将 MD5、SHA、AES、RSA 等主流加密算法的复杂调用流程(如密钥生成、算法初始化、字节数组处理等)封装成极简的静态方法,让开发者无需关注底层实现细节,一行代码就能完成加密 / 解密、摘要计算等操作。

核心优势:
极简调用:原生 API 需多步手动处理的加密 / 解密、摘要计算等操作,通过 SecureUtil 仅需一行静态方法调用即可完成;
灵活适配:内置常用算法的默认配置,同时支持自定义算法参数(如 AES 模式、RSA 密钥长度);
智能兼容:自动处理字节数组与字符串的转换,规避编码不一致导致的乱码问题;
便捷的密钥管理:内置对称密钥、非对称密钥对的一键生成工具,无需手动封装 JDK 密钥生成器;
全场景覆盖:一站式支持对称加密、非对称加密、哈希 / 摘要、签名验签、随机数 / UUID 生成等安全需求。

下面对部分加密算法进行代码示例:

哈希 / 摘要算法(MD5/SHA256 等)
最常用的场景,用于生成数据的不可逆摘要

importcn.hutool.crypto.SecureUtil;publicclassSecureUtilDemo{publicstaticvoidmain(String[]args){StringrawStr="123456";// MD5摘要(32位小写)Stringmd5=SecureUtil.md5(rawStr);// SHA256摘要Stringsha256=SecureUtil.sha256(rawStr);// 带盐值的MD5(防碰撞)Stringmd5WithSalt=SecureUtil.md5(rawStr+"my_salt_123");System.out.println("MD5: "+md5);// e10adc3949ba59abbe56e057f20f883eSystem.out.println("SHA256: "+sha256);}}

对称加密(AES/DES)
加密和解密使用同一密钥,适合小数据加密(推荐 AES)

importcn.hutool.crypto.SecureUtil;importcn.hutool.crypto.symmetric.AES;publicclassAesDemo{publicstaticvoidmain(String[]args){Stringcontent="敏感数据:123456789";// 生成AES密钥(也可自定义密钥,需16/24/32位)byte[]key=SecureUtil.generateKey("AES").getEncoded();AESaes=SecureUtil.aes(key);// 加密为Base64字符串(方便传输)StringencryptStr=aes.encryptBase64(content);// 解密StringdecryptStr=aes.decryptStr(encryptStr);System.out.println("加密后:"+encryptStr);System.out.println("解密后:"+decryptStr);// 还原原始内容}}

非对称加密(RSA)
加密和解密使用公钥 / 私钥对,适合分布式场景(如接口签名、数据传输)

importcn.hutool.crypto.SecureUtil;importcn.hutool.crypto.symmetric.AES;publicclassAesDemo{publicstaticvoidmain(String[]args){Stringcontent="敏感数据:123456789";// 生成AES密钥(也可自定义密钥,需16/24/32位)byte[]key=SecureUtil.generateKey("AES").getEncoded();AESaes=SecureUtil.aes(key);// 加密为Base64字符串(方便传输)StringencryptStr=aes.encryptBase64(content);// 解密StringdecryptStr=aes.decryptStr(encryptStr);System.out.println("加密后:"+encryptStr);System.out.println("解密后:"+decryptStr);// 还原原始内容}}

签名验签(防数据篡改)
基于 RSA/DSA 实现签名,确保数据传输过程中未被篡改

importcn.hutool.crypto.SecureUtil;importcn.hutool.crypto.asymmetric.RSA;publicclassSignDemo{publicstaticvoidmain(String[]args){Stringcontent="需要签名的数据";RSArsa=SecureUtil.rsa();// 私钥签名(生成Base64格式签名)Stringsign=rsa.signBase64(content.getBytes());// 公钥验签booleanverify=rsa.verify(content.getBytes(),sign);System.out.println("验签结果:"+verify);// 输出 true}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 11:00:38

用Comsol探索水力压裂:井眼应力场与多分支缝应力分布的奥秘

应用comsol分析水力压裂对井眼附近应力场的影响应用comsol分析多分支缝压裂应力分布 在各种应力作用下&#xff0c;井眼围岩会发生应力集中现象&#xff0c;也会发生一定规律下的压缩和拉伸。 具体分析了岩石弹性模量、地应力和井眼液柱压力对应力场的影响。 具体算例如下。 正…

作者头像 李华
网站建设 2026/4/15 5:54:13

Langchain-Chatchat如何优化Embedding计算效率?批处理与GPU加速

Langchain-Chatchat如何优化Embedding计算效率&#xff1f;批处理与GPU加速 在构建企业级本地知识库问答系统时&#xff0c;一个常被忽视却至关重要的环节浮出水面&#xff1a;Embedding 计算的性能瓶颈。当你上传一份百页PDF准备构建私有知识库时&#xff0c;理想中的“秒级响…

作者头像 李华
网站建设 2026/4/17 1:43:53

直驱风机+储能并网实战手记

风力发电&#xff0b;储能并网协同运行模型【含个人笔记、参数选择参考资料】 包含永磁风机发电机、储能系统、单极单相并离网逆变器及其各自控制系统(也可以按照需求改为三相并网) 永磁直驱风机:机侧变流器采用转速外环电流内环的双闭环控制策略&#xff0c;爬山搜索法实现最大…

作者头像 李华
网站建设 2026/4/17 10:49:43

Comsol 实现 IGBT 电热力多物理场仿真探索

comsol建模与仿真 焊接性IGBT、压接型IGBT单芯片、压接型IGBT模块导通的电热力多物理场仿真 累积循环次数仿真 模块截止时的电场仿真在电力电子领域&#xff0c;IGBT&#xff08;绝缘栅双极型晶体管&#xff09;因其出色的性能被广泛应用。而 Comsol 作为一款强大的多物理场仿真…

作者头像 李华
网站建设 2026/4/15 10:58:01

Langchain-Chatchat如何实现跨语言检索?中英文混合文档处理

Langchain-Chatchat如何实现跨语言检索&#xff1f;中英文混合文档处理 在跨国企业、科研机构和法律事务所中&#xff0c;一个常见的痛点是&#xff1a;员工用中文提问&#xff0c;却需要从成百上千页的英文技术文档、年报或论文中查找答案。传统搜索依赖关键词匹配&#xff0c…

作者头像 李华
网站建设 2026/4/16 15:09:40

Langchain-Chatchat支持Markdown格式解析:技术文档处理利器

Langchain-Chatchat 支持 Markdown 格式解析&#xff1a;技术文档处理利器 在现代软件开发和企业知识管理中&#xff0c;技术文档的数量与复杂性正以前所未有的速度增长。从 API 说明到项目 README&#xff0c;从内部 Wiki 到设计草案&#xff0c;信息分散、查找困难已成为团队…

作者头像 李华