对称加密与非对称加密:原理、区别与实战选择
七崽爱吃小饼干2026/09/23阅读 0
只要涉及到网络传输、数据存储,"加密"就是绕不开的话题。而所有现代加密体系,本质上都建立在两类算法之上:对称加密和非对称加密。
这篇文章从最基础的"密钥"说起,讲清两类算法的原理、区别,最后落到真实场景选型。
一、先搞懂"密钥"
加密的核心是把明文变成密文,解密则是反过来。这个变换过程需要一个参数,就是密钥。
- 对称加密:加密和解密用同一把钥匙。
- 非对称加密:加密和解密用一对钥匙,一把公开(公钥),一把保密(私钥)。
理解这两句话,后面的一切都好推。
二、对称加密
原理
加密方和解密方共享同一个密钥 K:
密文 = Encrypt(明文, K)
明文 = Decrypt(密文, K)
常见算法:
- AES(Advanced Encryption Standard):当今主流,128/192/256 位密钥,性能高,广泛用于 TLS、文件加密、数据库加密。
- DES / 3DES:老算法,DES 已不安全,3DES 也逐渐被淘汰。
- ChaCha20:流式加密,移动端和弱 CPU 环境性能优异。
优点
- 速度快:纯位运算和查表,比非对称快几个数量级,适合加密大量数据。
- 密文长度与明文接近,存储和传输开销小。
缺点
- 密钥分发是死穴:通信双方必须事先安全地共享同一把密钥。如果密钥在分发途中被窃取,整个加密就形同虚设。
- 无法安全地在"从未见过面"的双方之间建立加密通道。
- 无法做数字签名(任何人都能伪造,因为大家持有同一把钥匙)。
三、非对称加密
原理
每个人持有一对数学上关联的密钥:公钥(公开)和私钥(自己保管)。
- 公钥加密,私钥解密:用于加密通信。
- 私钥签名,公钥验签:用于身份认证和数据完整性。
密文 = Encrypt(明文, 公钥)
明文 = Decrypt(密文, 私钥)
公钥可以随便公开,私钥永远不外泄,这就从根本上解决了对称加密的"密钥分发"难题。
常见算法
- RSA:最经典,安全性基于大整数分解难题。密钥长(2048/4096 位),速度慢。
- ECC / ECDSA:椭圆曲线,相同安全强度下密钥更短、更快,现代 TLS 首选。
- DH / ECDH:密钥交换算法,用来在不安全信道上协商出一把共同的对称密钥。
优点
- 无需预先共享密钥,公钥可公开分发。
- 支持数字签名,能验证身份和防篡改。
- 密钥管理相对简单,n 个人通信只需 n 对密钥(对称加密则需要 n²/2 个共享密钥)。
缺点
- 速度慢,通常只适合加密很短的数据(如对称密钥、摘要)。
- RSA 等算法对明文字节数有上限,且密文会膨胀。
- 计算开销大,尤其在大数据量场景不可接受。
四、两者的核心区别
| 维度 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥 | 一对共享密钥 | 公钥 + 私钥 |
| 速度 | 快 | 慢(比对称慢数百到数千倍) |
| 密文膨胀 | 几乎无 | 明显 |
| 密钥分发 | 困难,需安全信道 | 公钥可公开 |
| 数字签名 | 不支持 | 支持 |
| 适用数据量 | 大量数据 | 少量数据(密钥、摘要) |
| 典型算法 | AES、ChaCha20 | RSA、ECC |
一句话概括:对称快但难分发,非对称易分发但慢。
五、实战:HTTPS 为什么两者都用?
HTTPS(TLS)握手就是两者的经典组合,思路是"用非对称加密安全地协商出一把对称密钥,之后通信用对称加密",这叫混合加密。
简化流程:
- 客户端发起连接,服务器返回证书(内含公钥)。
- 客户端验证证书合法性(由 CA 签名,防止中间人伪造)。
- 客户端生成一个随机的会话密钥(对称密钥),用服务器公钥加密后发给服务器。
- 服务器用私钥解密,拿到会话密钥。此时双方共享了同一把对称密钥。
- 之后的 HTTP 数据传输,全部用这把对称密钥做 AES 加密。
这样既享受了非对称加密"安全协商密钥"的好处,又获得了对称加密"高速传输"的性能,两全其美。
六、其他常见场景怎么选?
- 密码存储:既不用对称也不用非对称,而用单向哈希 + 加盐(bcrypt、scrypt、Argon2)。因为密码只需要验证,不需要还原。
- 数字签名 / 证书:非对称(RSA、ECDSA)。
- 接口敏感字段加密:通常对称(AES),密钥通过安全渠道配置。
- 文件 / 数据库加密:对称(AES),因为数据量大。
- 密钥交换:非对称(ECDH)或密钥封装机制。
七、几个容易混淆的点
- 加密 ≠ 哈希:哈希是单向不可逆的,加密是可逆的。存密码用哈希,传数据用加密。
- 非对称加密不能替代对称加密:它慢到无法用于大数据量,二者是互补关系。
- 公钥加密、私钥解密用于加密;私钥签名、公钥验签用于认证,方向别记反。
- 密钥长度不等于安全强度等价:2048 位 RSA ≈ 112 位对称安全强度 ≈ 224 位 ECC,不同算法不能直接比位数。
- 算法安全不等于实现安全:ECB 模式、固定 IV、弱随机数都会让强算法形同虚设。
八、小结
- 对称加密:一把钥匙,快,适合大量数据,难在密钥分发。
- 非对称加密:公私钥,慢,适合密钥交换和签名,易分发。
- 现实中普遍采用混合加密:非对称协商密钥,对称加密数据。
- 选型口诀:传数据用对称,换密钥用非对称,存密码用哈希。