首页 › 开发工具 › SHA-256与SHA-512计算器

SHA-256与SHA-512计算器

用纯 JavaScript 同步实现 SHA-256 与 SHA-512 分组压缩算法,输入文本按 UTF-8 计算摘要,可输出小写十六进制或 Base64 形式,附带前 8 位短哈希、输入字节数、填充分块细节与空串自检向量,无需 https 环境。

算法

两者同属 SHA-2 家族,输出长度分别为 256 位与 512 位

输出形式

数据来源:FIPS PUB 180-4(Secure Hash Standard)SHA-256 / SHA-512 算法与填充规则

算法SHA-256(256 位摘要)
输入字符数3个
输入 UTF-8 字节数3字节
摘要(十六进制小写)ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
摘要(另一种形式)ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=
前 8 位短哈希ba7816bf
摘要十六进制长度64个字符

分组压缩与填充细节

项目值说明
分组(block)长度64 字节SHA-256 以 512 位为一组
消息轮数64 轮每组压缩函数的迭代次数
工作字长32 位(位运算实现)SHA-512 需要 64 位加法与循环右移
填充后总长度64 字节追加 0x80、若干 0x00,末尾放消息比特长度
处理分组数1至少处理 1 个分组(空输入也要填充计算)
比特长度字段64 位按大端写入,本工具输入长度上限 20 万字符不会溢出
空串自检向量e3b0c44298fc1c149afbf4c8…本次运行结果与 FIPS 180-4 标准值一致
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

算法为纯 JavaScript 同步实现(按 FIPS 180-4 手写分组压缩),不依赖 Web Crypto 的 crypto.subtle,因此在本站以 file:// 打开或 http 访问时同样可用,且 Node 环境结果一致。哈希是单向的,无法从摘要还原原文;文本内容短时可用彩虹表或暴力字典反查,所以存储登录口令应使用 bcrypt / argon2 等带盐慢哈希,而不是直接用 SHA-256。

本页所有计算在浏览器内完成,输入内容不会被上传。

计算口径

按 FIPS 180-4:先把输入按 UTF-8 编码成字节,追加 1 个 0x80 字节与若干个 0x00,使总长度对 512 位(SHA-256)或 1024 位(SHA-512)同余于 448/896,最后写入 64/128 位的大端消息比特长度。每个分组扩展出消息调度字(SHA-256 为 64 个 32 位字,SHA-512 为 80 个 64 位字),再做对应轮数的压缩函数迭代,与初始哈希值相加得到摘要。初始值与轮常量取自前若干个质数平方根、立方根的无理数小数部分。

使用说明

  • 校验下载文件时把文件内容或文本粘贴进来,对比官方公布的十六进制摘要
  • 做接口签名时通常要求小写 hex,输出形式选"十六进制(小写)"再取用
  • 只需展示前缀或做缓存键时用"前 8 位短哈希"

常见问题

同样内容为什么别的工具算出的 SHA-256 不一样?

几乎总是编码差异:中文按 UTF-8 与按 GBK 编码的字节完全不同,摘要也就不同;另外是否包含末尾换行、是否被剪贴板自动加了空格都会改变结果。本工具统一按 UTF-8 且不额外补换行。

为什么不用浏览器自带的 crypto.subtle?

crypto.subtle 只在安全上下文(https 或 localhost)可用,而且是异步接口,本站要求工具函数纯同步、本地文件双击打开也要能算,因此手写实现了标准算法,并用 FIPS 公布的空串向量做自检。

SHA-256 和 SHA-512 选哪个?

安全强度两者都足够,SHA-512 摘要更长(128 个十六进制字符)、对长消息在 64 位机器上更快,但部分区块链与下载校验场景约定使用 SHA-256(64 个字符)。按对方文档要求选择即可。