sha256
SHA256
是一种 安全哈希算法(Secure Hash Algorithm),属于 SHA-2 家族,由美国国家安全局(NSA)设计, 目前广泛用于密码学、区块链、数字签名、文件完整性验证等场景。
🔍 一句话解释
SHA256 会把任意长度的数据(比如一个文件、一段文本),变换成一个固定长度的 256 位(64 个十六进制字符)哈希值。
这个哈希值可以被看作是数据的指纹。即使原始内容只改动一个字符,生成的哈希值也会完全不同。
📦 SHA256 特性
特性 | 描述 |
---|---|
输出长度 | 固定 256 位(二进制),等于 64 位十六进制字符串 |
输入长度 | 任意长度(可以是 1 字节也可以是 1GB) |
不可逆性 | 不能通过哈希值反推出原始数据 |
雪崩效应 | 输入稍有改动,输出将完全不同 |
抗碰撞性 | 很难找到两个不同的输入使它们哈希值一样 |
算法分类 | SHA-2 系列的一种(还有 SHA224, SHA384, SHA512 等) |
安全性 | 目前被广泛认为是安全的,无有效攻击方法 |
🔐 常见应用场景
场景 | 应用方式 |
---|---|
文件完整性校验 | 下载 .sha256 文件,验证文件是否被篡改 |
数字签名 / GPG 签名 | 加密签名用 SHA256 对原始数据进行摘要 |
区块链 | 比特币区块哈希使用 SHA256 |
SSL证书 | 证书签名算法通常使用 SHA256 |
密码存储(配合加盐) | SHA256(password + salt) (不推荐单独使用) |
🧪 示例:哈希演示
验证哈希
shell
sha256sum -c gitea-1.22.0-linux-amd64.sha256
--check:检查模式,表示去验证某个哈希校验文件中列出的文件和其哈希值是否匹配。
🔧 与其他哈希算法对比
算法 | 输出长度 | 安全性 | 推荐使用 |
---|---|---|---|
MD5 | 128 位 | ❌ 不安全 | ❌ |
SHA1 | 160 位 | ⚠️ 不推荐 | ❌ |
SHA256 | 256 位 | ✅ 安全 | ✅ 推荐 |
SHA512 | 512 位 | ✅ 更安全 | ✅(大数据量) |
🧩 SHA256 不是加密算法!
- 它是 单向哈希算法,不能“还原”数据。
- 如果你要对数据保密,请使用对称加密(如 AES)或非对称加密(如 RSA)。
- 如果你要验证数据完整性或签名,SHA256 是非常合适的工具。