在线工具箱
消息摘要

消息摘要与编码工具

MD5 / SHA 系列哈希计算,支持 HMAC 与文件校验。

隐私安全:所有处理均在您的浏览器本地完成,数据绝不上传
哈希MD5SHAHMAC编码

  • MD5128 位

    —

  • SHA-1160 位

    —

  • SHA-224224 位

    —

  • SHA-256256 位

    —

  • SHA-384384 位

    —

  • SHA-512512 位

    —

使用说明

  • · 文本摘要:粘贴文本即实时算出六种摘要;结果可切换大小写,逐行复制或一键复制全部。
  • · HMAC:先选密钥格式(文本 / Hex),填入密钥与消息,即可得到四种 HMAC 值,常用于接口签名验证。
  • · 编码转换:选择 Hex / Base64 / URL / 大小写与方向,双栏实时联动;「交换」可把结果回填为输入并反转方向。
  • · 文件摘要:拖入或点选文件,边读边算并显示进度;完成后可复制结果与官方发布的校验值逐字比对。
  • · 摘要值一律以十六进制表示,默认小写;与 md5sum、sha256sum 的输出一致。

隐私声明:本工具的全部计算(摘要、HMAC、编解码与文件读取)都在你的浏览器内完成,不发起任何网络请求,也不使用 Cookie 或第三方统计。你输入的文本、密钥与选择的文件不会离开本机,断开网络后依然可以正常使用。

工作原理

  1. 1输入文本后先按 UTF-8 编码为字节序列,中文与 emoji 均按真实字节参与运算,因此结果与终端命令一致。
  2. 2MD5、SHA-1、SHA-224、SHA-256 使用内置的纯 TypeScript 实现(RFC 1321 / FIPS 180-4);SHA-384、SHA-512 采用 WebCrypto 的 crypto.subtle.digest 计算,非安全上下文(非 HTTPS / localhost)下这两项会给出明确原因。
  3. 3HMAC 按 RFC 2104 实现:密钥长度超过分组长度(64 字节)时先做一次摘要压缩,再与 0x36、0x5c 两种填充异或后包住消息做两轮摘要;HMAC-SHA512 由 WebCrypto 完成。
  4. 4文件摘要使用增量摘要器:每次只读取 2MB 分块并立即喂入哈希上下文,处理完即释放,因此内存占用与文件总大小无关。
  5. 5编码转换复用同一套字节工具:编码方向先 UTF-8 编码再映射为 Hex / Base64 / URL 字符,解码方向反向还原字节并校验合法性(如 Base64 的填充与字符集、URL 的百分号转义)。

常见问题

MD5 还安全吗?还能用来做什么?

MD5 已被证明存在碰撞攻击,不能用于数字签名、口令存储等安全场景(口令请改用 bcrypt / Argon2)。但它计算快、兼容性极好,仍然非常适合做文件完整性校验、去重标识与缓存键,这也是本工具保留它的原因。

数据会上传到服务器吗?

不会。所有摘要、HMAC 与编解码都在你的浏览器内完成,不发起任何网络请求,断网也能正常使用,原文本、密钥与文件都不会离开你的设备。

为什么有些算法会显示「不可用」?SHA-256 会不可用吗?

SHA-384 / SHA-512 依赖浏览器 WebCrypto(crypto.subtle),只在 HTTPS 或 localhost 等安全上下文下提供;若通过 http:// 或不安全的内嵌环境打开页面,这两项就会显示不可用并给出原因。SHA-256 不可用的情况不会出现:MD5、SHA-1、SHA-224、SHA-256 与 HMAC-MD5 / SHA1 / SHA256 都由内置的纯 TypeScript 实现,不依赖该接口,任何环境下均可用。

HMAC 和普通哈希(消息摘要)有什么区别?

普通哈希只对消息做单向摘要,任何人拿到消息都能算出同一个值,因此无法证明「是谁」生成的;HMAC 把密钥与消息按 RFC 2104 一起参与运算(ipad 0x36 / opad 0x5c 两轮摘要),只有持有同一密钥的一方能算出相同结果,所以常用于接口签名、令牌与消息完整性校验。密钥不同,HMAC 结果完全不同;同一算法下 HMAC 输出长度与对应哈希一致。

大文件摘要会卡死浏览器吗?有大小限制吗?

不会。文件按 2MB 分块顺序读取并即时喂入哈希上下文,内存占用恒定,因此 1GB 甚至更大的文件也能算,只是耗时随体积线性增长;计算期间会显示进度,并让出主线程以保持界面响应。

空字符串能算摘要吗?

可以。空输入的摘要是一组固定值(例如空串的 MD5 为 d41d8cd98f00b204e9800998ecf8427e),常用于校验算法实现是否正确。清空输入框后结果区仍会显示这组固定值。

更多在线工具