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)

    • AI(Hutool-ai)

    • 注解(annotation)

    • 数组(array)

    • JavaBean(bean)

    • 缓存(cache)

    • 类加载器(classloader)

    • 编码解码(codec)

      • 简介
        • 📚简介
        • 🏗️核心结构
          • 1. 模块划分
          • 2. 核心功能分类
          • 基础编码
          • 二进制编码
          • 哈希算法
        • 🚀快速开始
          • 1. 基础编码示例
          • 凯撒密码
          • ROT13编码
          • 摩尔斯电码
          • 2. 二进制编码示例
          • Base64编码
          • Hex编码
          • Base58编码
          • 3. 哈希算法示例
          • MD5哈希
          • SHA-256哈希
          • MurmurHash
        • 🎯设计优势
        • 📌注意事项
        • 📚相关文档
      • 进制转换工具类-RadixUtil
      • Hex工具类-HexUtil
      • 哈希工具类-HashUtil
    • 集合(collection)

    • 比较器(comparator)

    • 压缩(compress)

    • 类型转换(convert)

    • 数据(data)

    • 日期时间(date)

    • 异常(exception)

    • 函数(func)

    • IO流(io)

    • 语言特性(lang)

    • Map(map)

    • 数字数学(math)

    • 网络(net)

    • 对象池(pool)

    • 反射(reflect)

    • 正则(regex)

    • 服务提供(spi)

    • 聚合操作(stream)

    • 字符串文本(text)

    • 并发和线程(thread)

    • 树结构(tree)

    • 工具集合(util)

    • XML操作(xml)

  • 定时任务(hutool-cron)

  • 加密(hutool-crypto)

  • 数据库(hutool-db)

  • 扩展(hutool-extra)

  • HTTP(hutool-http)

  • 日志(hutool-log)

  • 配置文件(hutool-setting)

  • JSON(hutool-json)

  • Office办公(hutool-poi)

  • 套接字(hutool-socket)

  • GUI(hutool-swing)

  • 指南
  • 核心(hutool-core)
  • 编码解码(codec)
Hutool
2026-01-03
目录

简介

# 📚简介

Hutool的编码解码模块提供了丰富的编码解码功能,涵盖了多种编码算法和哈希算法,为Java开发者提供了便捷的编码解码解决方案。该模块包含多个子模块,分别处理不同类型的编码解码需求。

# 🏗️核心结构

# 1. 模块划分

模块 主要职责 核心类/接口
根模块 基础编码算法 Encoder、Decoder、Caesar、Rot、Morse、Luhn等
binary 二进制编码解码 Base64、Hex、Base32、Base58、Base62等
hash 哈希算法 HashUtil、MurmurHash、CityHash、Simhash等

# 2. 核心功能分类

# 基础编码

  • 凯撒密码:Caesar - 经典的替换加密算法
  • ROT编码:Rot - ROT13、ROT47等字符轮换编码
  • 摩尔斯电码:Morse - 摩尔斯电码编解码
  • Luhn算法:Luhn - “模10”算法,是一种简单的校验和(Checksum)算法
  • Hashids:Hashids - 将数字转换为短字符串的编码算法
  • PunyCode:PunyCode - 国际化域名编码
  • PercentCodec:PercentCodec - URL百分比编码
  • 进制转换:RadixUtil - 不同进制之间的转换

# 二进制编码

  • Base64:Base64 - 最常用的二进制编码
  • Base16/Hex:Hex - 十六进制编码
  • Base32:Base32 - Base32编码,包括标准Base32和Crockford Base32
  • Base58:Base58 - 比特币等加密货币使用的编码
  • Base62:Base62 - 使用字母和数字的编码
  • Z85:Z85Codec - ZeroMQ使用的编码

# 哈希算法

  • 工具类:HashUtil - 提供各种哈希算法的便捷方法
  • MurmurHash:MurmurHash - 高性能哈希算法
  • CityHash:CityHash - Google的CityHash算法
  • Simhash:Simhash - 相似度哈希,用于文本去重
  • 一致性哈希:ConsistentHash - 分布式系统常用的哈希算法
  • KetamaHash:KetamaHash - Memcached使用的哈希算法

# 🚀快速开始

# 1. 基础编码示例

# 凯撒密码

// 凯撒密码加密
String encrypted = Caesar.encrypt("Hello Hutool", 3);
// 解密
String decrypted = Caesar.decrypt(encrypted, 3);
Console.log(encrypted); // Khoor #xwrro
Console.log(decrypted); // Hello Hutool

# ROT13编码

// ROT13编码/解码
String text = "Hello Hutool";
String encoded = Rot.rot13(text);
String decoded = Rot.rot13(encoded); // ROT13编码和解码是同一个操作
Console.log(encoded); // Uryyb Uhgbby
Console.log(decoded); // Hello Hutool

# 摩尔斯电码

// 摩尔斯电码编码
String morseCode = Morse.encode("HELLO");
// 解码
String text = Morse.decode(morseCode);
Console.log(morseCode); // .... . .-.. .-.. ---
Console.log(text); // HELLO

# 2. 二进制编码示例

# Base64编码

// Base64编码
String base64 = Base64.encode("Hello Hutool");
// 解码
String text = Base64.decodeStr(base64);
Console.log(base64); // SGVsbG8gSHV0b29s
Console.log(text); // Hello Hutool

# Hex编码

// Hex编码
String hex = Hex.encodeHexStr("Hello Hutool");
// 解码
String text = Hex.decodeHexStr(hex);
Console.log(hex); // 48656c6c6f204875746f6f6c
Console.log(text); // Hello Hutool

# Base58编码

// Base58编码
String base58 = Base58.encode("Hello Hutool");
// 解码
String text = StrUtil.str(Base58.decode(base58), CharsetUtil.CHARSET_UTF_8);
Console.log(base58); // Cn8eVZg
Console.log(text); // Hello Hutool

# 3. 哈希算法示例

# MD5哈希

// MD5哈希
String md5 = HashUtil.md5Hex("Hello Hutool");
Console.log(md5); // 1e61360d5e3552e7d8ed530c79ec69c9

# SHA-256哈希

// SHA-256哈希
String sha256 = HashUtil.sha256Hex("Hello Hutool");
Console.log(sha256); // f5a7924e621e84c9280a9a27e1bcb7f654b18476d2588f26e170c3db7f8a584c

# MurmurHash

// MurmurHash3 32位
int murmur32 = HashUtil.murmur32("Hello Hutool");
// MurmurHash3 128位
long[] murmur128 = HashUtil.murmur3_128("Hello Hutool");
Console.log(murmur32); // 143624574
Console.log(Arrays.toString(murmur128)); // [2066547334, -1606525350]

# 🎯设计优势

  1. 全面覆盖:涵盖了几乎所有常用的编码解码算法和哈希算法
  2. 简单易用:提供简洁的API,一行代码即可完成复杂的编码解码操作
  3. 高性能:底层实现经过优化,性能优异
  4. 可扩展性强:采用接口设计,便于扩展新的编码算法
  5. 线程安全:所有工具类都是线程安全的,可以在多线程环境下安全使用
  6. 无外部依赖:纯Java实现,无外部依赖

# 📌注意事项

  1. 字符编码:在进行编解码操作时,注意指定正确的字符编码,避免乱码
  2. 性能考虑:对于大量数据的编解码,考虑使用流式处理
  3. 安全性:某些编码算法(如Base64)并不是加密算法,不能用于敏感数据保护
  4. 哈希碰撞:任何哈希算法都存在碰撞的可能,对于安全要求高的场景,建议使用加密哈希算法
  5. 版本兼容性:不同版本的 Hutool 可能对某些算法的实现有所调整,注意版本兼容性

# 📚相关文档

  • 进制转换工具类-RadixUtil
  • Hex工具类-HexUtil
  • 哈希工具类-HashUtil

通过 Hutool 的编码解码模块,您可以轻松处理各种编码解码需求,从简单的Base64编码到复杂的哈希算法,都能找到相应的工具类和方法。该模块设计简洁易用,性能优异,是Java开发者处理编码解码问题的得力助手。

资源类加载器-ResourceClassLoader
进制转换工具类-RadixUtil

← 资源类加载器-ResourceClassLoader 进制转换工具类-RadixUtil→

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