Skip to content

SHA-256 哈希生成器与校验和工具

免费在线生成 SHA-256 哈希值。在浏览器中对文本或文件进行哈希、验证校验和,复制 64 字符十六进制输出。无需注册,数据不离开页面。

无追踪 浏览器中运行 免费
所有哈希计算均在浏览器本地完成,不会向任何服务器传输数据。
算法
已根据 NIST FIPS 180-4 测试向量审核 SHA-256 正确性 — Go Tools 工程团队 · 2026年5月28日

什么是 SHA-256?

SHA-256(安全哈希算法,256 位)是 SHA-2 家族中部署最广泛的密码哈希函数,由美国国家安全局设计,NIST 于 2001 年以 FIPS 180-2 的一部分发布。它接受任意输入——文本、文件或字节流——并生成固定的 256 位(64 字符十六进制)指纹,以密码学级别的确定性唯一标识输入。

SHA-256 自发布以来抵御了所有碰撞攻击。NIST FIPS 180-4 规范仍然有效;它被美国联邦政府、PCI DSS、FIPS 140-3 以及 IETF 互联网标准批准使用。它支撑着 TLS 证书(浏览器在证书对话框中显示的指纹)、Git 的现代对象 ID 格式(自 Git 2.29 的 SHA-256 模式起)、Bitcoin 的交易 ID 和工作量证明、JWT 签名验证(JWS HS256、RS256、ES256 家族),以及每个主流包管理器(npm、pip、cargo、apt)完整性列中的内容。

本工具完全在你的浏览器中使用 Web Crypto API 的 crypto.subtle.digest('SHA-256', ...) 计算 SHA-256——与浏览器在 TLS 握手中内部使用的同一原语。不会上传任何字节;不涉及服务器。你看到的哈希值与 sha256sum、OpenSSL 的 dgst -sha256 或 Python 的 hashlib.sha256() 产生的结果完全相同。

何时使用 SHA-256:文件完整性验证、内容寻址存储、数字签名工作流、证书指纹、通过内容哈希破坏缓存、去重。何时不使用 SHA-256:密码存储(使用 bcrypt、scrypt 或 Argon2——SHA-256 对密码防护而言运算速度过快)、不使用正确构造的 HMAC(使用专用 HMAC 库),或作为通用随机 ID(改用 UUID)。

对比:SHA-256 产生 64 个十六进制字符,而 MD5 产生 32 个(2004 年已被破解)、SHA-1 产生 40 个(2017 年已被破解)、SHA-384 产生 96 个、SHA-512 产生 128 个。256 位输出提供 128 位的碰撞阻力——远超任何可预见的计算攻击。

// Hash text using Web Crypto API (SHA-256)
async function sha256(text) {
  const data = new TextEncoder().encode(text);
  const hash = await crypto.subtle.digest('SHA-256', data);
  return Array.from(new Uint8Array(hash))
    .map(b => b.toString(16).padStart(2, '0'))
    .join('');
}

await sha256('Hello, World!');
// → 'dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f'

SHA-256 示例

验证 Ubuntu ISO 下载

ubuntu-24.04.iso

将下载的 ISO 拖入「文件」选项卡;工具以分块方式计算 SHA-256,对大文件显示进度。将得到的哈希值与 Ubuntu 在 releases.ubuntu.com 发布的 SHA256SUMS 文件进行比对。匹配则确认下载内容与 Canonical 签署的版本逐位一致——这是任何 Linux 发行版的标准完整性检查方式。

对 TLS 证书进行指纹提取

-----BEGIN CERTIFICATE-----MIIDXTCCAkWg...

粘贴 PEM 编码的证书正文(如果你的工具链需要原始 DER 十六进制,可去掉 BEGIN/END 标记)。SHA-256 指纹就是浏览器证书信息对话框中显示的内容,也是 HTTP 公钥固定(Public Key Pinning)头中使用的值。现代浏览器将其显示为以冒号分隔的 32 个十六进制字节;本工具提供完整的 64 字符形式,这正是大多数 API 和配置文件所需的格式。

生成用于缓存破坏的内容哈希

/* CSS file contents */

一种常见的静态站点模式:对 CSS 或 JS 文件内容进行哈希,将哈希的前 8 个字符作为查询字符串(?v=a1b2c3d4)或文件名后缀(app.a1b2c3d4.css),并以 1 年缓存头提供服务。内容变更时哈希随之变化,从而以确定性方式破坏缓存。SHA-256 非常适合这一场景,因为碰撞在实践中不可行——即使截断为 8 个字符,对单个站点而言意外碰撞的概率也极低。

原像查找验证

password123
ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f

'password123' 的 SHA-256 哈希为 ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f。此示例的重点在于揭示危险:切勿使用普通 SHA-256 存储密码——它运算速度太快(现代 GPU 每秒可暴力破解数十亿次)。对于密码,请使用带有适当盐值和成本参数的 bcrypt、scrypt 或 Argon2。SHA-256 用于完整性验证,而非存储凭据。

如何生成 SHA-256 哈希值

  1. 1

    粘贴文本或拖入文件

    选择「文本」选项卡,将任意字符串粘贴到输入区域;或切换到「文件」选项卡,将文件从桌面拖入拖放区。SHA-256 算法选择器已激活。哈希值随输入实时更新,无需点击「生成」按钮。对于文件,大文件上传(>10 MB)期间会显示进度指示器。

  2. 2

    复制 64 字符哈希值

    点击哈希输出旁的「复制」按钮。完整的 64 字符十六进制值将复制到剪贴板。如果你的下游系统需要特定大小写,可使用「大写/小写」切换——Git 使用小写,部分 Windows 工具默认大写。

  3. 3

    使用「对比」选项卡进行验证

    切换到「对比」选项卡,粘贴两个 SHA-256 哈希值(例如你的和发布方的)。工具使用恒定时间比较报告匹配/不匹配结果,不会泄漏时序信息。适用于验证下载的 ISO 文件、容器镜像摘要或已签名的 JAR 文件指纹。

技术细节

算法:SHA-2 家族,Merkle-Damgård 构造
SHA-256 以 512 位块处理输入,应用 64 轮位运算(旋转、异或、模 2^32 加法),常数由前 64 个素数的立方根派生。最终哈希是最后一个块处理后的内部状态。实现:FIPS 180-4 第 4.2 节和 6.2 节。
输出:256 位,64 个十六进制字符
始终恰好为 64 个字符,范围 [0-9a-f](小写)或 [0-9A-F](大写)。不同编码(Base64、Base64URL)会缩短字符串;本工具输出标准的十六进制形式。
性能:浏览器约 500 MB/s,原生约 2 GB/s
Web Crypto 的 SHA-256 实现是在 JS 虚拟机外运行的编译型 C/Rust 代码,因此与原生工具相当。浏览器典型哈希速率:300–800 MB/s。1 GB 文件哈希需 1–3 秒。
标准:FIPS 180-4、RFC 6234、NIST SP 800-107
NIST 批准在 2030 年及以后的所有安全强度级别使用。PCI DSS 4.0 要求用于持卡人数据完整性,FedRAMP 和 Common Criteria EAL2+ 评估亦有要求。

最佳实践

始终对 UTF-8 字节而非 Unicode 码位进行哈希
同一字符串的不同编码会产生不同的哈希值。UTF-8 是事实标准;本工具在哈希前将输入编码为 UTF-8。如果你需要匹配使用 UTF-16(部分 Windows API)或 Latin-1 的工具,需要在外部预先编码。
验证时使用恒定时间比较
如果你在代码中比较两个哈希值,请使用恒定时间等值检查(Node.js 中的 timingsafe_equal,Python 中的 hmac.compare_digest)。简单的 === 或 strcmp 会泄漏时序信息,可能被利用来恢复哈希值。本工具的「对比」选项卡已使用恒定时间比较。
对于非安全用途,截断 SHA-256 是可以接受的
对于缓存破坏文件名或短内容 ID,取 SHA-256 哈希的前 8 或 16 个十六进制字符是可行的——在互联网规模上碰撞概率依然极低。对于密码用途(签名、指纹),请始终保留完整的 64 个字符。
任何带密钥的用途均应搭配盐值
如果你使用 SHA-256 从密钥派生密钥或令牌,请始终为每个输入包含唯一的盐值。没有盐值时,相同的输入产生相同的哈希——这会泄漏信息。更好的选择:使用 HKDF(RFC 5869)或 HMAC-SHA-256,而非原始 SHA-256 进行密钥派生。

SHA-256 常见问题

SHA-256 是什么?与 MD5 或 SHA-1 有何不同?
SHA-256 是 SHA-2 家族中的 256 位密码哈希函数,由 NSA 设计,NIST 以 FIPS 180-4 标准化。它产生 64 字符的十六进制输出。与 MD5(128 位,2004 年已被破解)和 SHA-1(160 位,2017 年已被破解)不同,SHA-256 在密码学上仍然安全:从未发现任何实际碰撞。它是数字签名、证书指纹、区块链交易 ID 和完整性验证的当前行业默认标准。
SHA-256 哈希有多长?
始终为 64 个十六进制字符(256 位 = 32 字节,每字节编码为 2 个十六进制字符)。无论输入大小,输出长度固定——1 字节输入和 10 GB 输入均产生 64 个十六进制字符。这种固定长度正是其作为指纹的实用之处。
SHA-256 可以用于密码存储吗?
不可以。SHA-256 运算速度太快——现代 GPU 每秒可计算数十亿个 SHA-256 哈希值,这正是攻击者对暴力破解密码所期望的。请使用专门设计为慢速的密码哈希算法:bcrypt、scrypt 或 Argon2id,各自配合适当的盐值和高成本参数。SHA-256 用于完整性验证(确认数据未被篡改),不用于存储密钥。
SHA-256 可以被反向推导出原始输入吗?
不能。SHA-256 是单向函数:给定哈希值,没有高效算法能恢复输入。唯一的通用攻击是暴力破解——尝试每个可能的输入并逐一哈希。对于任意输入,这在计算上不可行。例外情况:短小且可预测的输入(常见密码、简单词汇)可以在彩虹表中查找,这正是密码加盐的重要性所在。
SHA-256 与 SHA-2 有什么区别?
SHA-2 是家族名称;SHA-256 是其中一个具体成员。SHA-2 家族还包括 SHA-512(512 位)、SHA-384(截断的 SHA-512)、SHA-224(截断的 SHA-256)、SHA-512/224 和 SHA-512/256。所有成员共享相同的 Merkle-Damgård 构造,仅字长和截断规则不同。SHA-256 是部署最广泛的成员——TLS、JWT、Git 和 Bitcoin 均默认使用它。
使用本工具时数据会被发送到服务器吗?
不会。SHA-256 完全在你的浏览器中使用 Web Crypto API(crypto.subtle.digest)计算。在哈希过程中打开开发者工具 → 网络选项卡——你会看到零外发请求。你在文件模式下拖入的文件通过 FileReader API 在本地读取和哈希;字节数据不会离开你的设备。这使本工具可安全地用于哈希机密文档、专有代码或敏感校验和。
如何验证下载文件的 SHA-256 校验和?
1)下载文件。2)打开本工具并点击「文件」选项卡。3)将文件拖入拖放区。4)等待哈希计算完成(大文件需要几秒钟)。5)打开发布方公布的 SHA256SUMS 文件。6)将两个哈希值粘贴到「对比」选项卡——绿色表示匹配,红色表示文件已损坏或被篡改。大多数 Linux 发行版、语言运行时(Python、Node.js)和软件厂商都在下载文件旁发布 SHA-256 校验和,正是为此目的。
为什么我的 SHA-256 输出与命令行工具不同?
几乎总是空白字符或编码问题。Shell 命令 `echo "hello" | sha256sum` 包含尾部换行符(\n),因此哈希的是 "hello\n" 而非 "hello"。使用 `echo -n "hello"` 去除换行符。其他注意事项:Windows 换行符(\r\n 与 \n)、UTF-8 BOM,或 UTF-8 字节与 UTF-16 字节的差异。SHA-256 极为敏感——单个字节的变化会完全改变输出。
SHA-256 能对空文件进行哈希吗?
可以。零字节的 SHA-256 哈希是一个众所周知的常量:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855。这有时被用作哨兵值,或作为验证哈希管道是否正确连接的快速检查手段。
应该使用 SHA-256 还是 SHA-512?
大多数情况下使用 SHA-256——它在 32 位硬件上更快,得到普遍支持,并提供 128 位的碰撞安全性。在 64 位硬件上 SHA-512 实际更快,或者当密码协议明确需要 256 位碰撞阻力时,请使用 SHA-512。对于日常使用(文件校验和、Git、TLS),SHA-256 是标准选择。

JWT 解码器 · 在线解码工具

安全工具

免费 JWT 解码器,在线即时解码 JWT 令牌。查看头部、载荷、签名以及过期时间、算法和声明详情。100% 浏览器本地运行——令牌绝不离开你的设备。无需注册、无跟踪。

在线 MD5 哈希生成器与文件校验工具

安全工具

在线生成 MD5、SHA-256、SHA-1、SHA-512 哈希值 — 完全免费,浏览器本地运算,无需注册。支持文本和文件哈希、校验和验证、哈希值对比,一键复制,数据绝不离开你的设备。

随机密码生成器 — 自定义长度、强度与安全性

安全工具

免费在线随机密码生成器,一键生成高强度安全密码。支持自定义长度、字符类型,批量生成多个密码。所有密码仅在浏览器本地生成,不上传不存储。

SHA-1 哈希生成器(160 位遗留算法)

安全工具

在浏览器中生成 SHA-1 哈希值 — 40 字符十六进制输出,无需上传。适用于 Git 指纹查询、旧证书核验和迁移审计的遗留工具。数据绝不离开你的设备。

SHA-3 哈希生成器(Keccak SHA3-256)

安全工具

免费在线生成 SHA-3 哈希值。NIST FIPS 202 海绵构造——SHA-2 后的新一代标准。SHA3-256 输出 64 个十六进制字符。纯浏览器运行,通过懒加载 js-sha3 实现,零上传。

SHA-384 哈希生成器(TLS Suite B 哈希)

安全工具

在线生成 SHA-384 哈希值——96 字符十六进制输出,免疫长度扩展攻击,符合 NSA Suite B 标准。与 AES-256-GCM 配对用于 TLS。所有哈希通过 Web Crypto API 在浏览器中运行。