1、加密基础回顾:对称加密与非对称加密的区别,常见算法(AES、RSA、SM4)的适用场景
聊字段级加密性能优化之前,咱们先把地基夯实一下。加密这事儿,说到底就两类:对称加密和非对称加密。很多新人容易搞混,其实分清它俩的关键就一句话——加密和解密用的是不是同一把钥匙。
对称加密:又快又简单,但钥匙怎么给?
对称加密,说白了就是你和对方共用一把钥匙。你用这把锁把数据锁上,对方用同一把锁打开。性能极高,特别适合大量数据的加密。
我自己做性能优化时,80% 的场景最后都落在了对称加密上。为什么?一个字:快。它的加解密速度比非对称快几个数量级,在 CPU 密集型任务里这差距是决定性的。
核心特点:
- 加密/解密使用相同密钥
- 算法简单,计算开销小
- 需要安全的密钥传输通道
- 密钥数量随通信方数指数增长
AES:目前最主流的对称算法
AES(Advanced Encryption Standard)是 NIST 标准,也是我项目里用得最多的。它支持 128、192、256 位密钥,目前公认 128 位就足够安全了。你想想看,破解 128 位 AES 需要的力量,地球上暂时没人能凑出来。
适用场景:
- 数据库字段级加密(我们在做的核心场景)
- 文件加密
- 传输层加密(TLS 内部也在用)
- 任何对性能和安全性都有要求的场景
SM4:国产商用密码算法
SM4 是国家密码管理局发布的对称算法,128 位分组,128 位密钥。我印象很深,几年前有个金融项目,客户指定必须用国密算法。当时找资料找得头疼,但踩完坑之后发现它和 AES 在性能上差距并不大,安全强度也够。
我的建议:
公司在国内做业务,尤其涉及政府、金融、运营商,直接上 SM4 省心。别等到等保测评的时候再返工,那个成本你扛不住。
非对称加密:安全有保障,性能是短板
非对称加密,加密用公钥,解密用私钥。公钥可以公开,私钥必须保密。这样一来,钥匙分发的问题就解决了——对方直接用你的公钥加密数据,只有你能解开。
但是,代价也很大。非对称加密的性能只有对称加密的几百分之一甚至上千分之一。为什么会这样?因为它背后是大数运算,动不动就是几百位的素数因子分解,CPU 算起来很吃力。
注意:
不要拿 RSA 去加密大块数据,会出人命的。实际项目中,非对称加密只用在小数据块上,比如加密对称密钥本身。
RSA:老牌选手,但别乱用
RSA 是目前最广泛使用的非对称算法,基于大整数因子分解的数学困难问题。密钥长度通常建议 2048 位以上,1024 位已经不安全了。
适用场景:
- 数字签名
- 密钥协商与传输
- 身份认证
- 小数据块加密(如支付密码、密钥本身)
我曾经在一个支付系统里,看到有人用 RSA 直接加密 JSON 报文,结果请求耗时从 50ms 飙升到了 3 秒。后来改成对称加密 + 密钥由 RSA 保护的混合方案,耗时降到了 60ms 以内。嗯,这就是典型的非对称用的不是地方。
| 特性 | 对称加密(AES/SM4) | 非对称加密(RSA) |
|---|---|---|
| 密钥 | 加解密使用相同密钥 | 公钥加密、私钥解密 |
| 速度 | 极快,硬件加速友好 | 慢,约 1/100 到 1/1000 |
| 密钥管理 | 难,多方的密钥数量爆炸 | 容易,公钥随便发 |
| 安全基础 | 混乱与扩散 | 数学困难问题 |
| 加密块大小 | 固定块(128/256位) | 受密钥长度限制(2048位≈256字节) |
| 适用数据量 | 任意大小 | 仅适合小数据 |
混合加密:实战中的标准解法
实际工程里,很少有人只用一种加密方式。绝大多数安全协议(如 TLS/SSL、HTTPS)都采用混合加密。
工作流程是这样的:
- 客户端用 RSA 公钥加密一个临时生成的 AES 密钥
- 服务端用 RSA 私钥解密得到 AES 密钥
- 后续大数据通信全部用 AES 加密
这样既解决了密钥分发问题,又保证了性能。我建议你在字段级加密里也采用这个思路——字段内容用对称算法加密,对称密钥用非对称算法保护。
避坑指南:
我曾经在一个项目中犯过这个错误:直接用 RSA 加密 10KB 的 JSON 负载,导致接口超时。后来改成 AES 加密负载 + RSA 加密 AES 密钥的组合方案,性能问题立刻解决了。
知识体系概览
下面这张图总结了三种算法在字段级加密中的位置和关系,你看看就明白了。
怎么选?我自己的判断标准
做了这么多年加密相关项目,我总结了一个简单的筛选逻辑,你拿过去直接用:
- 如果只是内部系统加密数据库字段——用 SM4 或 AES-256 就够了,没必要上非对称
- 如果涉及跨系统、跨组织的密钥分发——必须上 RSA/SM2 保密钥传输安全
- 如果既要传输安全又要高性能——混合加密没商量,字段内容用对称,密钥用非对称
- 如果客户明确要求国密合规——SM4 + SM2,别掺 RSA,等保专家会找你喝茶的
小结一下
回顾这三种算法,你会发现其实根本不存在"最好"的加密方式。对称加密性能好但密钥管理难,非对称加密安全但太慢,混合加密是两者妥协的结果。