常见加密算法(MD5/SHA/AES)区别
概述
日常开发中经常会遇到 MD5、SHA、AES 这些名字,但它们用途完全不同。简单来说:MD5 和 SHA 是哈希算法,AES 是加密算法。哈希是单向的,加密是可逆的。
MD5
是什么
MD5(Message Digest Algorithm 5)是一个 128 位的哈希算法,输出 32 个十六进制字符。诞生于 1991 年,曾经是最流行的哈希算法之一。
特点
实际用途
安全建议
不要再将 MD5 用于密码存储、数字签名、证书验证等安全场景。如果只是需要快速校验文件完整性,MD5 仍然可用。
SHA 家族
SHA(Secure Hash Algorithm)由美国国家安全局设计,是目前使用最广泛的哈希算法族。
SHA-1
SHA-2
SHA-2 是当前推荐使用的哈希算法,包含多个输出长度:
SHA-256 是当前最推荐的哈希算法。Git 用它来标识提交(commit hash),HTTPS 证书签名也在使用。
SHA-3
2015 年发布的最新 SHA 标准,基于 Keccak 算法。与 SHA-2 完全不同,安全性更高。目前尚未大规模普及,但作为备用方案存在。
使用示例
# Linux 计算文件哈希
md5sum file.txt
sha256sum file.txt
sha512sum file.txt// JavaScript (Web Crypto API)
const hash = await crypto.subtle.digest('SHA-256', data)// Go
import "crypto/sha256"
hash := sha256.Sum256(data)AES
是什么
AES(Advanced Encryption Standard)是一种对称加密算法,加密和解密使用同一个密钥。2001 年被 NIST 采纳为联邦标准。
密钥长度
密钥越长越安全,但性能也越慢。AES-256 是目前最常用的选择。
加密模式
使用场景
使用示例
// Web Crypto API
const key = await crypto.subtle.generateKey(
{ name: 'AES-GCM', length: 256 },
true,
['encrypt', 'decrypt']
)哈希 vs 加密
**哈希(MD5 / SHA):**
**加密(AES):**
RSA 非对称加密
除了 AES 这类对称加密,还有 RSA 这类非对称加密。RSA 使用公钥加密、私钥解密,解决了密钥分发的问题。但 RSA 速度比 AES 慢很多,通常只用来加密少量数据(如 AES 密钥),实际数据用 AES 加密。
总结
本站的哈希计算工具支持 MD5、SHA-1、SHA-256、SHA-384、SHA-512,加解密工具支持 AES、DES、RSA,可以在线验证和测试这些算法。