Hutool Hutool
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
  • 快速入门

  • 核心(hutool-core)

  • 定时任务(hutool-cron)

  • 加密(hutool-crypto)

    • 简介
    • 加密解密工具-SecureUtil
    • 对称加密(symmetric)

    • 非对称加密(asymmetric)

    • 摘要算法(digest)

      • 介绍
      • 摘要加密-Digester
        • 介绍
          • 摘要算法介绍
        • Hutool支持的摘要算法类型
          • 摘要算法
        • 使用
          • Digester
        • 更多摘要算法
          • SM3
      • 消息认证码算法-HMac
    • 证书(cert)

    • 简单认证和安全层(sasl)

    • OpenSSL相关(openssl)

    • BouncyCastle相关(bc)

  • 数据库(hutool-db)

  • 扩展(hutool-extra)

  • HTTP(hutool-http)

  • 日志(hutool-log)

  • 配置文件(hutool-setting)

  • JSON(hutool-json)

  • Office办公(hutool-poi)

  • 套接字(hutool-socket)

  • GUI(hutool-swing)

  • 指南
  • 加密(hutool-crypto)
  • 摘要算法(digest)
Hutool
2026-01-03
目录

摘要加密-Digester

# 介绍

# 摘要算法介绍

摘要算法是一种能产生特殊输出格式的算法,这种算法的特点是:无论用户输入什么长度的原始数据,经过计算后输出的密文都是固定长度的,这种算法的原理是根据一定的运算规则对原数据进行某种形式的提取,这种提取就是摘要,被摘要的数据内容与原数据有密切联系,只要原数据稍有改变,输出的“摘要”便完全不同,因此,基于这种原理的算法便能对数据完整性提供较为健全的保障。

但是,由于输出的密文是提取原数据经过处理的定长值,所以它已经不能还原为原数据,即消息摘要算法是不可逆的,理论上无法通过反向运算取得原数据内容,因此它通常只能被用来做数据完整性验证。

# Hutool支持的摘要算法类型

在不引入第三方库的情况下,JDK支持有限的摘要算法:

详细见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#MessageDigest (opens new window)

# 摘要算法

  • MD2
  • MD5
  • SHA-1
  • SHA-256
  • SHA-384
  • SHA-512

# 使用

# Digester

以MD5为例:

Digester md5 = new Digester(DigestAlgorithm.MD5);

// 5393554e94bf0eb6436f240a4fd71282
String digestHex = md5.digestHex(testStr);

当然,做为最为常用的方法,MD5等方法被封装为工具方法在DigestUtil中,以上代码可以进一步简化为:

// 5393554e94bf0eb6436f240a4fd71282
String md5Hex1 = DigestUtil.md5Hex(testStr);

# 更多摘要算法

# SM3

在4.2.1之后,Hutool借助Bouncy Castle库可以支持国密算法,以SM3为例:

我们首先需要引入Bouncy Castle库:

<dependency>
  <groupId>org.bouncycastle</groupId>
  <artifactId>bcpkix-jdk18on</artifactId>
  <version>1.83</version>
</dependency>

然后可以调用SM3算法,调用方法与其它摘要算法一致:

Digester digester = DigestUtil.digester("sm3");

//136ce3c86e4ed909b76082055a61586af20b4dab674732ebd4b599eef080c9be
String digestHex = digester.digestHex("aaaaa");

Java标准库的java.security包提供了一种标准机制,允许第三方提供商无缝接入。当引入Bouncy Castle库的jar后,Hutool会自动检测并接入。具体方法可见SecureUtil.createMessageDigest。

上次更新: 2026/01/13, 16:42:43
介绍
消息认证码算法-HMac

← 介绍 消息认证码算法-HMac→

Theme by Vdoing | Copyright © 2025-2026 Hutool | Apache-2.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式