SHA-256 加密
输入文本,生成哈希值
在线SHA-256加密工具
免费在线SHA-256加密工具。输入文本即刻生成SHA-256哈希值,支持批量加密、大小写切换。完全本地处理,安全可靠。
即时SHA-256加密
输入任意文本即刻生成256位哈希值。支持中文、特殊字符、空字符串等所有输入,基于Web Crypto API确保结果准确。
批量加密
支持多行文本批量加密,每行独立生成SHA-256。适合批量密码加密、数据签名等场景,一键复制全部结果。
安全本地处理
所有加密计算在浏览器本地完成,文本不会发送至任何服务器。使用浏览器原生加密API,与命令行工具结果一致。
SHA-256 算法详解
深入了解SHA-256的工作原理与技术细节。
消息填充
Padding
原始消息末尾添加1位"1"和若干"0",再附加64位的原始消息长度,使总长度为512位的倍数。这确保了任意长度的输入都能被处理。
64轮压缩
Compression
每个512位分块经过64轮压缩运算。每轮使用不同的常数K(来自前64个素数的立方根小数部分),通过位移、异或等逻辑运算混合数据。
8个状态变量
State Variables
使用a到h共8个32位工作变量。初始值来自前8个素数的平方根小数部分(如a=0x6a09e667)。每轮更新这些变量,最终拼接为256位输出。
消息扩展
Message Schedule
每个512位分块产生16个32位字,再通过σ函数扩展为64个字(W₀-W₆₃)。这使原始16个字的微小变化扩散到全部64轮运算中。
单向性
One-way Function
已知SHA-256值,无法反推出原始输入。这种单向性来自信息的不可逆压缩:256位输出空间远小于无限的输入空间。
确定性
Deterministic
相同的输入永远产生相同的输出。无论在什么操作系统、什么编程语言中,"hello"的SHA-256值都是相同的64位十六进制字符串。
应用场景
密码加密
将用户明文密码转为SHA-256哈希存储。即使数据库泄露,攻击者也无法还原原始密码。建议配合加盐使用。
API签名
将请求参数与密钥拼接后取SHA-256作为签名。服务端验证签名确保请求未被篡改,广泛用于支付接口。
数据指纹
为数据生成唯一指纹用于去重、缓存Key生成、内容寻址存储。相同内容始终产生相同哈希值。
完整性验证
软件发布时提供SHA-256校验值。用户下载后计算对比,确认文件未被篡改或传输损坏。
SHA-256 加密专业知识
加盐哈希
直接对密码进行SHA-256存在彩虹表攻击风险。正确做法是为每个密码生成随机盐值(salt),将盐值与密码拼接后再哈希。这样即使两个用户密码相同,存储的哈希值也不同。
HMAC-SHA256
将密钥与消息一起参与SHA-256运算的认证方案。比简单的 SHA256(key+message) 更安全,能防止长度扩展攻击。JWT令牌、API签名等广泛使用HMAC-SHA256。
SHA-256 与 bcrypt
SHA-256速度快,适合数据完整性验证。但密码存储应使用bcrypt/scrypt/Argon2等慢哈希算法——它们故意设计得很慢,使暴力破解代价极高。SHA-256每秒可计算数十亿次,安全性不足。
双重SHA-256
Bitcoin使用SHA256(SHA256(data))双重哈希。这不是因为单次不安全,而是为了防止理论上的长度扩展攻击,并作为额外的安全保险。第二次哈希使攻击难度进一步提升。
常见问题
Q.SHA-256加密后能解密吗?
不能。SHA-256是单向哈希函数,从数学上不可能根据哈希值反推出原始文本。所谓的"SHA-256解密"实际是通过预计算的彩虹表查找常见字符串,无法解出任意数据。这正是它适合密码存储的原因。
Q.SHA-256加密和MD5加密有什么区别?
SHA-256输出256位(64个十六进制字符),MD5输出128位(32个字符)。更重要的是,MD5已被证明存在碰撞漏洞,可被伪造。SHA-256目前没有已知的有效攻击方法,安全性远高于MD5。
Q.如何用SHA-256安全地存储密码?
不要直接 SHA256(password)。正确做法是:1) 生成随机盐值;2) 计算 SHA256(salt + password);3) 存储盐值和哈希值。更好的方案是使用专门的密码哈希算法如bcrypt或Argon2。
Q.在线SHA-256加密安全吗?
本工具完全安全。所有计算在您的浏览器本地完成,输入的文本不会发送到任何服务器。我们使用浏览器原生的Web Crypto API,结果与命令行工具(如sha256sum)完全一致。即使断网也能正常使用。