3 对称加密与非对称加密基础归纳总结

说到加密,其实就两大类:对称加密 和 非对称加密。

别被名字吓到,说白了,核心区别就一个词——密钥。

3.1 对称加密:一把钥匙开一把锁

对称加密,你想想看,加密和解密用的是同一个密钥。

像一把钥匙开一把锁。发消息的人用这把钥匙锁上,收消息的人用同一把钥匙打开。

核心特点:

  • 速度快:适合加密大量数据,比如文件、视频流。
  • 密钥管理难:怎么把密钥安全地传给对方?这是个大问题。

我在项目中遇到过,用对称加密加密数据库里的字段。当时用的是 AES-256,速度确实快。但密钥怎么存?硬编码在代码里肯定不行。后来用了密钥管理服务,每次启动时拉取。

常见的对称加密算法,我这里列个表:

算法 密钥长度 分组大小 典型场景
AES 128/192/256 bit 128 bit 文件加密、通信加密
DES 56 bit 64 bit 老系统(已不推荐)
3DES 112/168 bit 64 bit 兼容旧设备
SM4 128 bit 128 bit 国密标准

避坑指南:

我曾经见过有人用 DES 加密生产数据,觉得没问题。后来被安全审计发现,要求全部升级到 AES。DES 的 56 位密钥,用现在的算力,暴力破解可能就几小时的事。别再用它了。

3.2 非对称加密:两把钥匙,一对搭档

非对称加密就聪明多了。它有一对钥匙:公钥 和 私钥。

公钥你可以随便发给别人。私钥自己藏好,谁都不给。

它的逻辑是:

  • 公钥加密的数据,只能用对应的私钥解密。
  • 私钥加密的数据,只能用对应的公钥解密(这个叫数字签名)。

我个人习惯把公钥想象成信箱,谁都能往里投信。私钥是信箱钥匙,只有你能打开取信。

但非对称加密有个硬伤——慢。

比对称加密慢几百上千倍。所以不适合直接加密大段数据。实际应用中,它主要用来加密对称密钥。

常见的非对称加密算法:

算法 密钥长度 典型用途 安全性
RSA 2048 / 4096 bit 加密、签名 高
ECC (椭圆曲线) 256 bit 加密、签名 高(同等安全强度下密钥更短)
SM2 256 bit 加密、签名 国密标准,与 ECC 类似

为什么 ECC 越来越流行?

本质上,ECC 的 256 位密钥,安全强度相当于 RSA 的 3072 位。密钥更短,计算更快,资源占用更少。我最近做的一个物联网项目,设备性能有限,全用的 ECC。效果不错。

3.3 对称与非对称加密的对比

嗯,这里我直接画了张对比图。你看一眼就明白了。

对称加密 vs 非对称加密对比图 对称加密 相同密钥加密解密 速度快、密钥管理难 非对称加密 公钥加密、私钥解密 速度慢、管理简单 互补 密钥管理:需安全通道传输 密钥管理:公钥随意分发 性能:快(适合大数据量) 性能:慢(适合小数据量) 典型场景: 用非对称加密传递对称密钥,再用对称加密加密业务数据

一句话总结:

对称加密用来加密数据,非对称加密用来加密密钥。这种组合拳,就是 HTTPS、SSH、VPN 等几乎所有安全协议的核心思想。

3.4 混合加密:取长补短

实际工程里,没人傻到只用一种。

都是混合加密。

流程是这样的:

  1. 客户端生成一个临时的对称密钥(叫会话密钥)。
  2. 用服务器的公钥(非对称)加密这个会话密钥,发过去。
  3. 服务器用私钥解密,拿到会话密钥。
  4. 之后通信,双方都用这个会话密钥(对称加密)加密数据。

这就解决了两个核心问题:

  • 安全传输密钥:非对称加密搞定。
  • 高效加密数据:对称加密搞定。

关于 RSA 的老话题:

我曾经维护过一套老系统,用的 RSA 1024。当时觉得够用了。直到前几年,安全团队说不达标,要求升级到 2048。现在看的话,新项目建议直接上 4096 或者换 ECC。RSA 密钥太长,计算开销其实也不小。

3.5 我的选择建议

嗯,最后给点实际建议。你设计系统时可以参考:

  • 文件加密、数据库加密、通信流加密:选 AES-256-GCM。兼顾安全和速度,GCM 模式还支持认证,能防篡改。
  • 密钥交换、数字签名、证书:选 ECC (P-256 或 P-384)。资源占用小,安全强度高。尤其是移动端和物联网设备。
  • 国密合规要求:对称用 SM4,非对称用 SM2。
  • 老系统兼容:如果实在改不动,用 RSA 2048 保底。但别再用 1024 了,我见过因为 RSA 1024 被攻破导致的数据泄露案例,代价很大。

一个小测试:

你想想看,一个 128 位的 AES 密钥,如果用 RSA 2048 加密后,密文长度是多少?

答案是 256 字节(2048 位 / 8)。因为 RSA 的输出长度跟密钥长度直接相关,跟输入数据长度无关。这是非对称加密的典型特性。

好了,关于对称和非对称加密的基础,就这些。记住那个核心思想——混合加密。后面讲密文检索 SDK 时,你会看到这个思想贯穿始终。