哈希与加密算法速查表

哈希与加密算法速查: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 未来被攻破时的单点风险)。二者当前都被认为是安全的。