SHA-256 哈希生成器与校验和工具
免费在线生成 SHA-256 哈希值。在浏览器中对文本或文件进行哈希、验证校验和,复制 64 字符十六进制输出。无需注册,数据不离开页面。
什么是 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
粘贴文本或拖入文件
选择「文本」选项卡,将任意字符串粘贴到输入区域;或切换到「文件」选项卡,将文件从桌面拖入拖放区。SHA-256 算法选择器已激活。哈希值随输入实时更新,无需点击「生成」按钮。对于文件,大文件上传(>10 MB)期间会显示进度指示器。
- 2
复制 64 字符哈希值
点击哈希输出旁的「复制」按钮。完整的 64 字符十六进制值将复制到剪贴板。如果你的下游系统需要特定大小写,可使用「大写/小写」切换——Git 使用小写,部分 Windows 工具默认大写。
- 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-256 可以用于密码存储吗?
SHA-256 可以被反向推导出原始输入吗?
SHA-256 与 SHA-2 有什么区别?
使用本工具时数据会被发送到服务器吗?
如何验证下载文件的 SHA-256 校验和?
为什么我的 SHA-256 输出与命令行工具不同?
SHA-256 能对空文件进行哈希吗?
应该使用 SHA-256 还是 SHA-512?
相关工具
查看所有工具 →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 在浏览器中运行。