哈希生成器
计算 UTF-8 文本的 SHA-1、SHA-256、SHA-512 摘要
将输入框中的文本编码为 UTF-8,并计算 SHA-1、SHA-256 和 SHA-512。可以直接计算空字符串;输入文件名只会得到文件名文本的摘要,不会读取文件内容。
选项默认关闭。启用时先统一换行,再去除首尾空白。浏览器文本框本身也会将粘贴的 CRLF/CR 转成 LF,因此这里适合核对文本摘要,不能用于保留原始文件字节的校验。修改输入或选项后,旧结果立即清空。
文本仅在当前页面内存中处理,不写入浏览器存储。输入和摘要都不会发送给统计服务;复制操作会把所选结果写入系统剪贴板。
哈希结果
点击“生成哈希”后显示三种算法的结果。空字符串也是有效输入。
算法与文本边界
这里只提供文本的 SHA-1、SHA-256、SHA-512 十六进制摘要,不提供文件上传、SHA-384 或加密解密。哈希是单向摘要。SHA-1 已不适合抵御碰撞攻击;新的完整性用途优先选择 SHA-256 或 SHA-512。
单纯哈希不能证明消息来自谁,也不适合直接保存密码。身份验证使用带密钥的 HMAC;密码存储使用 bcrypt 等专用算法。相同文字的 Unicode 编码形式、首尾空白或换行不同,都可能改变摘要;本工具不做 Unicode 规范化。
完整说明还包括常见问题处理、操作示例、代码片段、FAQ 和相关工具,便于核对结果或排查问题。
工具说明
使用浏览器 Web Crypto API 计算文本的 SHA-1、SHA-256 和 SHA-512 摘要。文本按所选空白处理选项处理后,以 UTF-8 编码参与计算。本页不读取文件,也不加密内容。工具不上传输入或保存输入草稿;网站访问统计另见隐私政策。
生产可用片段
abc 的已知摘要(UTF-8,3 字节,无换行)
text
SHA-1: a9993e364706816aba3e25717850c26c9cd0d89d
SHA-256: ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
SHA-512: ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f对比决策
文本校验、消息身份验证,还是密码存储?
普通 SHA 摘要
将相同文本字节与可信来源的参考摘要比对。
与用途匹配的安全方案
身份验证按协议使用 HMAC 或数字签名;密码存储使用服务端专用密码哈希。
补充:摘要比对有助于发现内容变化,但如果攻击者能同时替换文本和参考摘要,就能让两者再次匹配。
失败门诊(高频踩坑)
末尾换行会改变摘要
原因:abc 是 3 个 UTF-8 字节,abc 后加 LF 则为 4 字节。后者的 SHA-256 为 edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb。
修复:确认参考输入是否含末尾换行;只有协议要求时才将它裁剪掉。
粘贴文本不等于保留原文件字节
原因:文本框会把换行规范为 LF。复制粘贴也可能在哈希前丢失原始编码或其他字节细节。
修复:本页只计算输入框里的文本。压缩包或精确文件校验和应交给直接读取文件字节的独立工具。
外观看起来一样的 Unicode 文本可能得到不同摘要
原因:é 可以是单个 U+00E9,也可以是 e 后接 U+0301,UTF-8 分别占 2 和 3 字节。本工具不做 Unicode 规范化。
修复:核对实际输入和编码。只有双方明确约定时才使用 NFC 等规范化规则。
场景配方
先用 abc 核对工具结果
目标:在比对业务摘要前,先验证一个有已知结果的输入。
- 关闭裁剪与换行统一,输入准确的 abc,不加空格或末尾换行。
- 生成摘要,确认输入为 3 个 UTF-8 字节。
- 按同一算法逐项比对下方三个完整已知结果。
结果:SHA-256 以 ba7816bf 开头,并应与下方完整的 64 个十六进制字符一致。
确认空白是否属于待计算内容
目标:用明确的裁剪选项观察实际字节如何改变。
- 输入一个空格、abc、再一个空格。关闭裁剪时,输入为 5 个 UTF-8 字节。
- 生成 SHA-256,应为 3eaf1941003943dfaa935adecffcaaa217e290def6fb0181141ced6c9daabaad。
- 开启裁剪后重新生成。输入变成 3 字节,摘要应与 abc 的已知结果一致。
结果:裁剪会改变消息内容。只有另一端采用相同规则时才应开启。
按 UTF-8 字节核对中文与 Emoji
目标:核对编码后的字节,而不是只数肉眼看到的字符。
- 准确输入 你好 😀,中间保留一个空格,不加末尾换行,关闭裁剪。
- 生成摘要,确认 UTF-8 字节数为 11。
- SHA-256 应为 11d38af3bdabe6b2cbeddca50ba2837db42ab16679896ed9cc0dfce30cfc1fa7。
结果:另一种实现只要使用相同 UTF-8 字节和算法,就应得到同一摘要。
推荐工作流
常见问题
支持哪些算法和输出格式?
本页输出小写十六进制的 SHA-1、SHA-256 和 SHA-512 摘要,长度分别为 40、64 和 128 个十六进制字符。SHA-1 仅用于旧系统比对;新完整性校验优先选 SHA-256 或 SHA-512。本页不生成 MD5 或 SHA-384 结果。
粘贴文件名或文件内容,能得到文件哈希吗?
不能。文件名只会作为普通文本参与计算,不代表文件内容。本页没有文件读取功能;浏览器文本框会把换行规范为 LF,复制粘贴也不能保留任意文件字节及原始编码。下载文件或压缩包应使用直接读取文件字节的哈希工具。
可以计算空文本的哈希吗?
可以。保持输入为空并点击“生成哈希”,即可计算零字节输入的标准摘要。启用裁剪时,仅包含首尾空白的输入也可能变成空文本。
普通 SHA 摘要能用于存密码或接口身份验证吗?
普通 SHA 摘要没有密钥,不能验证发送者身份。接口鉴权应按协议使用 HMAC 或数字签名。密码存储应在服务端使用专门的密码哈希实现,例如 Argon2id 或 bcrypt,并正确设置盐和计算成本。
别人能从摘要恢复输入吗?
摘要没有解密操作,但别人可以猜测可能的输入,再计算摘要逐一比对。因此,对短密码、邮箱或其他可预测内容做哈希,并不能让它们保密。
继续浏览