SHA256(Secure Hash Algorithm 1)是一种加密哈希函数,由美国国家安全局(NSA)设计,并于1995年作为美国联邦信息处理标准发布。SHA256能够将任意长度的输入数据转换成一个固定长度为160位(20字节)的哈希值,通常用40个十六进制字符表示。
SHA256 特点
- 固定输出长度:始终生成160位(40个十六进制字符)
- 单向性:从哈希值无法反向推导出原始数据
- 确定性:相同输入始终产生相同的哈希值
- 雪崩效应:输入微小变化会导致输出完全不同
- 快速计算:哈希计算速度非常快
常见应用场景
- 文件完整性验证:下载文件后校验是否完整
- 数字签名:SSL证书和代码签名
- 版本控制系统:Git使用SHA256标识提交
- 密码存储:旧系统中的密码哈希(不推荐)
- 数据去重:快速判断数据是否相同
安全性说明
自2017年起,SHA256已被证明不再安全,存在碰撞攻击漏洞(即不同输入可能产生相同哈希值)。对于新的安全敏感应用,建议使用更安全的算法如SHA-256或SHA-3。但由于其广泛的历史应用,SHA256仍在许多非安全场景和遗留系统中使用。
重要提示:
- SHA256不适用于存储密码等敏感信息
- 对于密码存储,请使用bcrypt、scrypt或Argon2等专门设计的哈希算法
- 文件校验等场景可以继续使用SHA256
SHA256 示例对比
| 输入文本 | SHA256(64位十六进制) |
|---|---|
| hello | aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d |
| world | 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed |
| 123456 | 7c4a8d09ca3762af61e59520943a264f89993ea6d |
| password | 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 |
| 你好 | f63c3e6225e7d0262976420c249064b8256a711b1 |