> cd ./tools/hash
本地计算 · 无账号
使用 Web Crypto SubtleCrypto,不支持 MD5。
这是什么
哈希(摘要)把任意长度输入映射成固定长度指纹,用于校验是否被改动、生成缓存键等。本页用 Web Crypto 计算 SHA-256 / SHA-384 / SHA-512,明文不离开浏览器。摘要不可逆,本工具也不做「解密」或破解。
原理
密码学哈希追求雪崩效应:输入改一个比特,输出应面目全非;并应难以找到碰撞。SHA-2 家族输出长度固定(如 SHA-256 为 32 字节,常显示为 64 位十六进制)。浏览器 SubtleCrypto.digest 在本地完成计算,算法标识与明文一并送入实现。哈希不是加密:没有密钥,也不能从摘要还原原文。口令存储还需要加盐与专用 KDF,远不止一次 SHA-256。教学上可把摘要想成「指纹」:同一文档应总得到同一指纹,但指纹本身不包含可逆向拼回原文的说明书。若两人得到不同摘要,优先怀疑换行、编码与不可见字符,而不是算法「算错」。
什么时候用
比对两段配置是否一致、给调试标签取短指纹、或核对文档中的期望摘要时可用。不要把本页当成密码保险柜;也不要用 MD5/SHA-1 做安全决策——本页只提供更强的 SHA-2。写作业或博客示例需要固定测试向量时,用本页生成十六进制期望值,再在 Playground 或本机 OpenSSL 对照,比口头描述「随便哈希一下」可靠得多。
示例
- SHA-256 空串
输入:(空字符串) 输出:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
- 同一输入多次相同
输入:crazycloudcc 输出:算法与 UTF-8 编码固定时,摘要前后一致(以页面十六进制为准)
常见错误
- 换行 \n 与 \r\n 会产生不同摘要,跨平台粘贴时要统一。
- Unicode 正规化形式不同(NFC/NFD)也会导致哈希不同。
- 把毫秒级日志整段哈希前,先确认是否包含会变化的时间戳字段。
常见问题
- 能从哈希反推原文吗?
- 设计上不能。极短原文可能被穷举猜测,但本工具不做破解。
- 支持文件选择吗?
- 当前面向文本。大文件请在本机用 shasum / certutil。
- 结果是十六进制还是 Base64?
- 页面以常见小写十六进制展示,便于和文档对照。
OpenSSL 命令行对照(本机)
# 在终端(非浏览器)对照同一字符串: # printf 'crazycloudcc' | openssl dgst -sha256 # 与本页 SHA-256 十六进制结果应一致(注意有无换行)
Playground 若未链接 OpenSSL,可用本页生成期望值,再在本机或 CI 里断言。注意 printf 与 echo 对换行的处理差异。
在 Playground 打开 · 数据只在本地处理:摘要在浏览器 Web Crypto 中计算。