加密技术基础:对称加密与非对称加密

加密这事,听起来挺玄乎,其实说白了就是——把数据变成别人看不懂的乱码,再用钥匙把它变回去。我在云安全领域摸爬滚打这些年,最深的感受是:很多人分不清对称和非对称到底该怎么用,结果不是性能扛不住,就是安全留了个大窟窿。这一章,我们就先把底子打扎实。

对称加密——一把钥匙开一把锁

对称加密,用的是一把密钥完成加密和解密。就像你用一把钥匙锁上门,同一把钥匙再打开它。速度快是它的最大优势。

核心思想:加解密共用同一密钥。

  • 加密:密文 = E(密钥, 明文)
  • 解密:明文 = D(密钥, 密文)

常见的对称加密算法

算法密钥长度优点缺点
AES128/192/256 bit速度快,硬件加速多密钥分发困难
ChaCha20256 bit移动端性能优异普及度相对低
SM4128 bit国标,国内合规国际通用性差
DES(已弃用)56 bit历史教材常见暴力破解只需几天

我在项目中遇到过一个坑:客户直接用 DES 加密用户密码的数据库字段,还觉得够安全。我赶紧让他们换到 AES-256。你想想看,56位密钥长度在今天的算力面前跟纸糊的没什么区别。

⚠ 关键注意:对称加密的最大瓶颈不是算法本身,而是密钥分发。如果密钥通过网络传输,中途被人截获,整个加密体系就崩了。

非对称加密——公钥和私钥双保险

非对称加密解决了密钥分发问题。它用一对密钥:公钥随便给别人,私钥自己藏好。公钥加密的只有私钥能解,私钥签名的只有公钥能验。

我的经验:非对称加密的速度比对称加密慢几百到几千倍,但不代表它不重要。它最擅长的场景是:握手阶段协商对称密钥,或者做数字签名。

常见的非对称加密算法

算法典型密钥长度应用场景性能
RSA2048/4096 bit密钥交换、数字签名慢
ECC(椭圆曲线)256 bit(等价于RSA 3072)移动端、证书签发比RSA快很多
SM2256 bit国密合规场景中等
Ed25519256 bit现代签名极快

为什么 RSA 到现在还有大量应用?因为历史久、兼容性好。但说实话,我个人习惯在新建系统里直接上 ECC 或 Ed25519。同等安全强度下,密钥更短,加解密更快,而且签名体积也小。

⚠ 我曾经踩过的一个坑:在 IoT 设备上用 RSA-4096 做签名校验,结果每次验签耗时超过 2 秒,电池直接崩了。后来换成 ECDSA with P-256,耗时降到几十毫秒。性能差距就是这么明显。

对称 vs 非对称:到底怎么选?

没有哪个是万能的。实际工程里,两者通常是组合使用:

  1. 建立连接时,用非对称加密安全地交换一个临时对称密钥(比如通过 TLS 握手)。
  2. 数据传输时,用对称加密加密大量数据,效率和安全性兼顾。
  3. 身份验证时,用非对称加密做数字签名,确保来源不可抵赖。

一句话总结:非对称管“握手和签名”,对称管“干活和传输”。

应用场景速览

场景推荐方案为什么
HTTPS/TLS非对称握手 + 对称加密数据速度和安全的平衡
数据库列加密AES-256-GCM纯数据保护,用对称更快
代码签名RSA-2048 或 ECDSA P-256验签方不需要私钥
JWT 令牌HS256(对称)或 RS256(非对称)单服务用对称,多服务用非对称
文件加密AES 加密文件 + RSA 加密密钥灵活管理授权
物联网固件升级ECDSA 签名 + AES 加密固件防篡改且性能合适

你可能会问:为什么 HTTPS 里不全程用非对称?呵呵,如果每个 TCP 包都用 RSA 加密一遍,服务器 CPU 直接冒烟。这就是为什么非对称只用来做“握手”——交换一个临时对称密钥,之后都交给 AES。

本章知识体系

下面这张图把对称加密和非对称加密的核心关系、典型算法和常见误区串起来了。你可以把它当一张记忆地图用。

加密技术基础:对称 vs 非对称 对称加密 AES (GCM/CTR) ChaCha20 SM4 DES(废弃) 非对称加密 RSA ECC / ECDSA SM2 Ed25519 典型应用组合 HTTPS/TLS 数字签名 数据加密 IoT固件 💡 关键原则: 非对称负责“握手+签名” → 对称负责“大数据量加密传输” → 两者配合才有高性能与高安全。

一个小建议:如果你刚开始学加密技术,先别急着啃数学公式。先把这张图里每个节点的“用在哪、多久换一次密钥、性能成本多少”搞清楚,后面学具体算法时就会顺很多。

好了,第一关的基本框架你已经有了。对称加密和非对称加密就像两把尺子——没有一把能通吃所有场景。记住那个关键原则:组合才是王道。