哈希与加密算法速查表
哈希与加密算法速查:MD5/SHA-1/SHA-256/SHA-3/HMAC 等哈希算法,bcrypt/scrypt/Argon2 等密码哈希,AES/RSA/ECC 加密算法的输出长度、安全性与最佳用途。
| 算法 | 类型 | 输出 / 长度 | 安全性 | 最佳用途 |
|---|---|---|---|---|
| MD5 | 哈希 | 128 bit | 已破解 | 文件校验和(非安全用途) |
| SHA-1 | 哈希 | 160 bit | 已碰撞,弃用 | 旧系统兼容、Git 对象 |
| SHA-224 | 哈希 (SHA-2) | 224 bit | 安全 | 较少使用的 SHA-2 变体 |
| SHA-256 | 哈希 (SHA-2) | 256 bit | 安全 | 证书、区块链、数字签名(最常用) |
| SHA-384 | 哈希 (SHA-2) | 384 bit | 安全 | 高安全等级场景 |
| SHA-512 | 哈希 (SHA-2) | 512 bit | 安全 | 高安全等级场景 |
| SHA-3 | 哈希 (Keccak) | 224/256/384/512 bit | 安全 | SHA-2 的标准化备选 |
| RIPEMD-160 | 哈希 | 160 bit | 基本安全 | 比特币地址生成 |
| HMAC | 消息认证码 | 随底层哈希 | 安全(需密钥) | API 签名、webhook 校验 |
| bcrypt | 密码哈希 | 60 字符 | 安全(可调 cost) | 密码存储(支持广泛) |
| scrypt | 密码哈希 | 可变 | 安全(内存硬) | 抗 ASIC 的密码存储 |
| Argon2 | 密码哈希 | 可变 | 安全(现代首选) | 新项目密码存储首选 |
| PBKDF2 | 密码哈希 | 可变 | 安全(靠迭代) | 兼容性要求高的场景 |
| AES | 对称加密 | 128/192/256 bit | 安全 | 数据加密(推荐 GCM 模式) |
| RSA | 非对称加密 | 2048/4096 bit | 安全(密钥够长) | 密钥交换、数字签名 |
| ECC | 非对称加密 | 256 bit 起 | 安全(短密钥) | 移动端与 TLS,效率高 |
| TOTP | 一次性口令 | 6-8 位 | 安全(短时效) | 两步验证 2FA |
| CRC32 | 校验和 | 32 bit | 非加密 | 传输完整性校验 |
| Base64 | 编码(非加密) | 变长 | 非加密 | 二进制转文本传输 |
常见问题
MD5 还能用吗?
不能用于任何安全目的:MD5 已被证实可人为制造碰撞,可被伪造签名与证书。它只适合非恶意场景的文件完整性校验(如下载包校验)。安全用途应选 SHA-256 及以上。
密码存储该用什么算法?
必须用专门的密码哈希函数,优先级:Argon2(现代首选)> scrypt > bcrypt > PBKDF2。绝不能用 MD5、SHA-1、SHA-256 这类快速哈希裸存密码(即使加盐),因为它们计算太快、易被 GPU 暴力破解;盐值与 cost 参数交给成熟库处理。
哈希(Hash)和加密(Encrypt)有什么区别?
哈希是单向的:任意长度输入映射为固定长度摘要,无法反推原文,用于完整性校验与密码存储。加密是双向的:用密钥把明文变成密文,持有密钥可解密还原,用于保密传输与存储。Base64 只是编码,两者都不是。
SHA-256 和 SHA-3 该怎么选?
默认选 SHA-256:性能与生态最好,硬件加速普及,库支持最全。SHA-3 内部结构与 SHA-2 完全不同,适合做算法多样化备选(防止 SHA-2 未来被攻破时的单点风险)。二者当前都被认为是安全的。