常见加密算法对比与选型:对称、非对称、国密
加密算法选型这事,说简单也简单,说复杂也复杂。关键就看你的场景需要什么:要快,还是要安全?要合规,还是要跟老系统兼容?我在项目中见过不少因为算法选错,导致系统上线后性能崩盘的例子。今天就聊聊几种主流算法的特点,以及怎么选。
核心结论:字段级加密首选对称加密,密钥管理用非对称加密搞定,金融合规场景必须上国密。
对称加密:AES 还是 SM4?
对称加密,说白了就是加密和解密用同一个密钥。速度快,适合大数据量。金融系统里,字段级加密绝大部分都用它。
AES 是全球通用标准,支持 128/192/256 位密钥。我个人习惯用 AES-256-GCM,因为GCM 模式自带认证,能防篡改。我在项目中遇到过一个问题:有人用了 AES-ECB 模式,结果同样的明文块加密结果一样,攻击者直接看出来字段规律——嗯,这是个坑,后面我会细说。
SM4 是国标,128 位密钥,性能和 AES-128 相当。如果你做的是国内金融项目,尤其是银行核心系统,监管要求必须用 SM4。我在某股份制银行项目中就碰到过,人行检查发现用了 AES 而不是 SM4,要求整改——折腾了两个月。
| 对比项 | AES-256-GCM | SM4-GCM |
|---|---|---|
| 密钥长度 | 256 bit | 128 bit |
| 模式支持 | GCM / CBC / CTR | GCM / CBC / CTR |
| 硬件加速 | 英特尔 AES-NI | 部分国产芯片 |
| 合规性 | 国际通用 | 国内金融必选 |
| 性能 | 约 1.2 GB/s | 约 1.0 GB/s |
避坑指南:我曾经见过一个项目,因为 SM4 没有硬件加速,在老旧 X86 服务器上性能只有 AES 的 60%。如果你的系统跑在国产鲲鹏或飞腾上,SM4 有指令集优化,性能反而更好。选型前一定要做压测!
非对称加密:RSA 的主要用途
非对称加密有公钥和私钥,一个加密另一个解密。缺点是速度慢,比对称加密慢几百倍。所以它不适合直接加密字段,而是用来做密钥交换和数字签名。
在字段级加密的场景里,非对称加密主要用于信封加密:用 RSA 加密 AES 密钥,再用 AES 加密字段数据。举个例子,你需要在多个微服务之间分发数据密钥,用 RSA 加密密钥后传输,保证密钥不被窃听。
RSA 密钥长度我建议至少 2048 比特。1024 比特已经被证明不安全了。不过,RSA 的计算开销真不小——加密 256 字节的密钥就需要几毫秒。如果并发量高,建议用国密 SM2 替代,性能更好,而且合规。
| 算法 | 密钥长度 | 加密速度 | 应用场景 |
|---|---|---|---|
| RSA-2048 | 2048 bit | 慢(~2ms/op) | 密钥加密、数字签名 |
| SM2 | 256 bit | 快(~0.3ms/op) | 密钥加密、数字签名 |
| ECC P-256 | 256 bit | 快(~0.2ms/op) | 密钥加密(国际标准) |
个人建议:如果你做的是新型金融系统,直接上 SM2。它和 SM4、SM3(哈希)组合成完整的国密套件,监管一次性通过,而且密钥长度短,证书体积小,传输快。
选型决策框架
怎么选?我总结了一个简单的三步法:
- 看合规:国内金融系统 → 国密 SM4 + SM2 + SM3。国际系统 → AES + RSA/ECC。
- 看性能:字段级加密量大,用对称加密。密钥分发用非对称加密。
- 看实现成本:如果团队对国密不熟悉,就选成熟的 AES 方案;如果监管严格,就咬牙上国密。
核心逻辑图
下面这张图展示了字段级加密的算法选型流程,从数据分类开始,到算法确定,再到密钥托管方式。
实战选型清单
我建议你在项目开始前,先回答这几个问题:
- 监管要求:人行、银保监会有没有明确指令?
- 数据量:每天加密多少条记录?峰值 TPS 是多少?
- 命周期:密钥要多久换一次?轮换策略是否支持?
- 硬件环境:有没有硬件安全模块(HSM)?CPU 是否支持加速指令?
个人经验:我曾在一个项目中,团队选用了 AES-256,但密钥存储用的是数据库字段,没上 HSM。结果审计时被查出密钥明文泄露风险——紧急上线了 HSM 方案,但已经耽误了上线时间。密钥管理比加密算法本身更值得关注。
总结
选算法其实不难。记住这个口诀:国内合规用国密,国际通用用 AES,密钥分发用非对称。再结合你的数据量和性能要求,基本就能敲定方案了。别贪新求异,稳定和合规才是金融系统的第一优先级。