SHA-256哈希生成器

从任何文本生成SHA-256哈希

输入文本

本地运行 · 粘贴密钥安全无忧

SHA-256哈希

SHA-256哈希将显示在这里…

什么是SHA-256哈希?

SHA-256(安全哈希算法256位)是SHA-2家族中的一种密码学哈希函数,由NIST于2001年随FIPS 180-2发布(后更新为FIPS 180-4)。无论输入是单个字符、数GB的文件,还是空字符串,SHA-256均生成固定的256位(32字节)摘要,通常以64个十六进制字符表示。SHA-256是目前生产系统中部署最广泛的哈希函数,支撑着TLS证书链、比特币工作量证明、子资源完整性(SRI)以及代码签名工作流。

SHA-256是单向函数:从输入计算哈希值很快(在现代硬件上每秒可处理数百MB),但逆向操作——找到能生成特定哈希的输入——在计算上不可行。这一特性称为原像抵抗,使SHA-256适用于密码哈希(结合盐值和密钥拉伸)、数字签名以及数据完整性验证。与MD5和SHA-1不同,迄今为止尚未发现针对完整SHA-256的碰撞或原像攻击。

SHA-2家族包含六个变体:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224和SHA-512/256。SHA-256以32位字为单位、每块执行64轮运算,针对32位处理器优化。SHA-512使用64位字和80轮运算,在64位平台上速度可能更快。对于大多数256位摘要已满足需求的应用场景,SHA-256仍是NIST、IETF及CA/Browser Forum的默认推荐算法。

为什么使用在线SHA-256生成器?

生成SHA-256哈希通常需要终端命令或几行代码。这个基于浏览器的工具让你无需安装任何东西、切换上下文或编写脚本,即可直接计算SHA-256摘要。

在浏览器中即时计算哈希
粘贴或输入任意文本,立即获得SHA-256摘要。Web Crypto API原生处理计算过程,无需引入任何JavaScript库。
🔒
隐私优先处理
你的输入永远不会离开你的设备。所有哈希计算均通过浏览器内置的Web Crypto API在本地运行,不向任何服务器传输数据。
📋
可直接复制的输出格式
一键获取小写或大写十六进制的哈希值,方便与包管理器、CI流水线或文档中的校验和进行比对。
🔍
交叉验证参考值
快速核验来自下载页面、SBOM清单或审计日志中的SHA-256摘要,无需打开终端或编写临时代码。

SHA-256使用场景

前端开发者 — 子资源完整性
计算CDN托管脚本或样式表的SHA-256哈希,填入script和link标签的integrity属性,防止供应链篡改。
后端工程师 — API请求签名
许多API(AWS Signature V4、Stripe webhooks)要求对请求负载计算SHA-256哈希。在开发和调试阶段,使用此工具生成参考哈希值。
DevOps — 产物验证
在部署到生产环境前,验证下载的二进制文件、Docker基础镜像或Terraform provider插件的SHA-256校验和。
QA工程师 — 测试向量验证
将SHA-256输出与NIST测试向量(FIPS 180-4示例)进行比对,确认你的哈希实现能正确处理边界情况。
数据工程师 — 行级指纹
用SHA-256对组合键或PII字段进行哈希,生成确定性、不可逆的指纹,用于数据流水线中的去重或假名化处理。
学生 — 密码学课程实验
通过SHA-256观察雪崩效应:修改输入中的单个字符,观察整个64字符输出如何发生不可预测的变化。

SHA-2家族变体对比

SHA-256属于FIPS 180-4定义的SHA-2家族。每个变体在摘要长度、性能特征和安全余量之间各有取舍。下表对你可能遇到的所有SHA-2变体进行比较。

变体摘要长度十六进制长度字节大小适用场景
SHA-256256 bits64 hex chars32 bytesTLS, blockchain, code signing, JWTs, SRI
SHA-224224 bits56 hex chars28 bytesTruncated SHA-256 — rare, specific compliance
SHA-384384 bits96 hex chars48 bytesGovernment / CNSS, higher collision margin
SHA-512512 bits128 hex chars64 bytesDigital signatures, HMAC with large keys
SHA-512/256256 bits64 hex chars32 bytesSHA-512 speed on 64-bit CPUs, 256-bit output

SHA-256 与 SHA-1、MD5、SHA-3 对比

选择合适的哈希算法取决于你的安全需求和兼容性约束。SHA-256处于实用的最佳平衡点:安全、得到广泛支持(包括Web Crypto API),并且对大多数工作负载来说足够快。下表涵盖了选择哈希函数时最重要的几项属性。

属性SHA-256SHA-1MD5SHA-3-256
Digest size256 bits (64 hex)160 bits (40 hex)128 bits (32 hex)256 bits (64 hex)
Security statusSecureBroken (2017)Broken (2004)Secure
Collision resistance2^128 operationsPractical attackPractical attack2^128 operations
Block size512 bits512 bits512 bits1600 bits (sponge)
Rounds64806424
StandardFIPS 180-4FIPS 180-4RFC 1321FIPS 202
Web Crypto APIYesYesNoNo
Primary use todayTLS, blockchain, SRILegacy git onlyNon-security checksumsBackup standard

SHA-256的内部工作原理

SHA-256通过Merkle–Damgård构造以512位(64字节)为块处理输入。算法初始化八个32位状态字(H0–H7),这些值来源于前八个质数的平方根的小数部分。每个块经过64轮混合运算,使用位运算(AND、XOR、NOT、右旋、右移)以及64个来源于前64个质数立方根的轮常数。

Input: "hello world"
SHA-256: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
(256 bits = 32 bytes = 64 hex characters)
步骤描述
PaddingAppend a 1-bit, then zeros until the message length is 448 mod 512. Append the original message length as a 64-bit big-endian integer.
Block splittingDivide the padded message into 512-bit (64-byte) blocks.
Message scheduleExpand each 16-word (32-bit) block into 64 words using sigma functions with right-rotate and right-shift operations.
CompressionProcess 64 rounds per block using Ch, Maj, and two Sigma functions with 64 round constants derived from cube roots of the first 64 primes.
OutputConcatenate the eight 32-bit state words (H0-H7) into a 256-bit (32-byte) digest, rendered as 64 hexadecimal characters.

雪崩效应确保输入中翻转单个比特会使约50%的输出比特发生变化。这一特性加上2^128的碰撞抵抗能力,是SHA-256在2026年仍作为安全敏感应用基线推荐算法的原因。

SHA-256代码示例

SHA-256在每种主流语言和运行时中均原生支持。Web Crypto API在浏览器中无需任何库即可提供该功能。以下示例展示了包括Unicode输入处理和文件哈希在内的实际使用模式。

JavaScript (Web Crypto API)
// Works in all modern browsers and Node.js 18+
async function sha256(text) {
  const data = new TextEncoder().encode(text)
  const hashBuffer = await crypto.subtle.digest('SHA-256', data)
  const hashArray = Array.from(new Uint8Array(hashBuffer))
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}

await sha256('hello world')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"

// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha256').update('hello world').digest('hex')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
Python
import hashlib

# Basic SHA-256 hash
result = hashlib.sha256(b'hello world').hexdigest()
print(result)  # → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"

# Hash a string (encode to bytes first)
text = 'café ☕'
hashlib.sha256(text.encode('utf-8')).hexdigest()
# → "3eb53e00aa1bb4b1e8aab1ab38e56e6b8fb0b20e1cf7e1d19f36e4fad2537445"

# Hash a file in chunks (memory-efficient)
with open('release.tar.gz', 'rb') as f:
    sha = hashlib.sha256()
    for chunk in iter(lambda: f.read(8192), b''):
        sha.update(chunk)
    print(sha.hexdigest())
Go
package main

import (
    "crypto/sha256"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha256.Sum256(data)
    fmt.Printf("%x\n", hash)
    // → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
}
CLI (Linux / macOS)
# Using sha256sum (Linux) or shasum (macOS)
echo -n "hello world" | sha256sum
# → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9  -

# macOS
echo -n "hello world" | shasum -a 256
# → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9  -

# Verify a file checksum
echo "b94d27b...  myfile.bin" | sha256sum -c
# → myfile.bin: OK

# Using openssl (cross-platform)
echo -n "hello world" | openssl dgst -sha256
# → SHA2-256(stdin)= b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

常见问题

SHA-256目前仍然安全吗?
是的。截至2026年,尚未发现针对完整SHA-256的实用碰撞、原像或第二原像攻击。NIST、CA/Browser Forum和IETF持续推荐SHA-256用于TLS证书、代码签名和数字签名。理论碰撞抵抗为2^128次操作,远超当前计算能力极限。
SHA-256和SHA-2有什么区别?
SHA-2是六个哈希函数的家族名称:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224和SHA-512/256。SHA-256是使用最广泛的成员。当文档写明「使用SHA-2」时,除非需要更长的摘要,否则几乎总是指SHA-256。
SHA-256可以被逆向或解密吗?
不能。SHA-256是单向哈希函数,不是加密。没有密钥,也没有解密过程。找回原始输入的唯一方式是暴力破解或字典攻击,对于足够复杂的输入在计算上不可行。对于简短或可预测的输入(如常见密码),存在预计算的彩虹表,这正是密码哈希应始终使用盐值及bcrypt或Argon2等专用密钥派生函数的原因。
SHA-256与SHA-3相比如何?
SHA-3(Keccak,FIPS 202)使用与SHA-256(Merkle–Damgård)完全不同的内部结构(海绵构造)。SHA-256和SHA-3-256均生成256位摘要,并提供等效的碰撞抵抗能力。SHA-3设计之初是为了在SHA-2被破解时提供备用方案,但SHA-2至今未被破解。SHA-256拥有更广泛的运行时支持——值得注意的是,Web Crypto API支持SHA-256但不支持SHA-3。
SHA-256适合用于密码哈希吗?
不适合直接使用。原始SHA-256密码哈希容易受到暴力破解和彩虹表攻击,因为SHA-256本身被设计为高速运算。对于密码存储,应使用bcrypt、scrypt或Argon2id等专用密钥派生函数,这些函数通过添加盐值和可配置的工作因子来减缓攻击速度。
比特币为何使用双重SHA-256?
比特币对区块头和交易ID计算SHA-256(SHA-256(data))(即hash256)。双重应用可防范长度扩展攻击——攻击者在不知道原始输入的情况下向消息追加数据并计算出有效哈希。这是Merkle–Damgård哈希的固有特性,单次SHA-256无法防止。
什么是子资源完整性(SRI)?它与SHA-256有何关联?
SRI是W3C规范,允许浏览器验证所获取的资源(脚本、样式表)未被篡改。你需要在integrity属性中添加期望文件内容的Base64编码SHA-256(或SHA-384/SHA-512)哈希。浏览器计算下载文件的哈希值,若不匹配则拒绝执行。SHA-256是SRI支持的最低级别算法。