加密算法入门:对称加密、非对称加密、哈希函数与数字签名

说实话,很多初学者一上来就被各种加密算法搞懵了。什么 AES、RSA、ECC,听着像天书。但你别怕,这一章我带你把这些东西拆开揉碎了讲清楚。

我做了这么多年安全架构,发现一个规律:证书链的根基,就是这四种算法。你搞懂了它们,后面搭建证书链就是水到渠成的事。

核心认知:加密算法不是魔法,是数学。但你不必成为数学家,只需要理解它们「能干什么」和「怎么用」。

1. 对称加密:一把钥匙开一把锁

对称加密,说白了就是加密和解密用同一把钥匙。你想想看,就像你家大门,用一把钥匙锁上,也用同一把钥匙打开。

目前最主流的对称加密算法是 AES(Advanced Encryption Standard)。它有三个常见密钥长度:128 位、192 位、256 位。我个人习惯,只要不是性能受限的场景,一律用 AES-256。

算法 密钥长度 安全性 典型场景
AES-128 128 位 足够安全 移动端、IoT 设备
AES-192 192 位 较高 企业级应用
AES-256 256 位 最高 金融、政府、证书密钥

我的经验:AES 加密速度非常快,硬件层面也有加速指令。我在项目中处理过 TB 级的数据加密,AES-256 完全扛得住。

对称加密最大的问题是什么?密钥分发。你想想,如果两个人要加密通信,得先商量好同一把钥匙。但商量钥匙的过程本身就不安全——这就陷入了死循环。

嗯,这个问题的答案,就是非对称加密。

2. 非对称加密:公钥私钥,各司其职

非对称加密引入了两个钥匙:公钥和私钥。公钥可以公开,私钥必须保密。用公钥加密的数据,只能用对应的私钥解密;反过来,用私钥加密的数据,只能用对应的公钥解密。

目前最主流的两种非对称加密算法是 RSA 和 ECC(椭圆曲线加密)。

RSA:老牌劲旅

RSA 基于大整数分解的数学难题。它的密钥长度通常为 2048 位或 4096 位。我刚开始做安全时,RSA 是绝对的主流。

但 RSA 有个硬伤:慢。而且密钥越长,加密越慢。2048 位的 RSA 加密几 KB 的数据还行,要是加密大文件,那性能就惨不忍睹了。

ECC:后起之秀

ECC 基于椭圆曲线离散对数难题。它用更短的密钥就能达到和 RSA 同等级别的安全性。举个例子:256 位的 ECC 密钥,安全性相当于 3072 位的 RSA 密钥。

安全等级 RSA 密钥长度 ECC 密钥长度
80 位 1024 160
112 位 2048 224
128 位 3072 256
256 位 15360 512

避坑指南:我曾经在项目中为了省事,用了 1024 位的 RSA 密钥。结果安全审计直接被拒,说密钥太短。现在行业标准最低是 2048 位,我建议直接上 4096 位或改用 ECC。

非对称加密解决了密钥分发问题,但性能太差。所以实际应用中,我们通常混合使用:用非对称加密传输对称密钥,然后用对称密钥加密实际数据。这就是后面会讲到的「混合加密体系」。

3. 哈希函数:不可逆的指纹

哈希函数不是加密,它没有「解密」这回事。它的作用是把任意长度的数据,压缩成固定长度的「指纹」。而且这个指纹是不可逆的——你无法从指纹反推出原始数据。

目前最常用的哈希算法是 SHA-256,它输出 256 位(32 字节)的哈希值。

# 示例:对 "Hello, World!" 计算 SHA-256
输入:Hello, World!
输出:dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f

哈希函数有三个核心特性:

  • 抗碰撞性:很难找到两个不同的输入,产生相同的哈希值
  • 单向性:从哈希值无法反推原始输入
  • 雪崩效应:输入稍微改变,哈希值就面目全非

我的经验:哈希函数在证书链中用来做「摘要」。证书的签名就是对证书内容的哈希值进行加密,而不是对整个证书加密——这样效率高得多。

4. 数字签名:防伪、防篡改、防抵赖

数字签名,说白了就是用私钥对哈希值进行加密。它解决了三个问题:

  1. 身份认证:签名者是谁
  2. 完整性:数据有没有被篡改
  3. 不可否认性:签名者不能抵赖

数字签名的流程是这样的:

  • 签名方:对数据计算哈希值 → 用私钥加密哈希值 → 得到签名
  • 验证方:对数据计算哈希值 → 用公钥解密签名 → 对比两个哈希值

如果两个哈希值一致,说明数据是完整的,而且确实来自私钥持有者。

避坑指南:我曾经见过有人直接用私钥加密整个文件当签名,结果性能差到离谱。记住:签名是对哈希值加密,不是对原始数据加密。这是很多新手容易犯的错误。

5. 知识体系总览

下面这张图,把本章的核心知识点串起来了。你仔细看看,就能理解这四种算法在证书链中的位置。

加密算法知识体系总览 对称加密 AES-128/192/256 非对称加密 RSA / ECC 哈希函数 SHA-256 数字签名 私钥签名·公钥验签 四种算法各司其职,共同构成证书链的密码学基础 在证书链中的应用 加密证书私钥 对称加密保护私钥存储 证书签名与验证 非对称加密 + 哈希 证书指纹校验 SHA-256 哈希摘要 核心流程:数字签名如何保护证书 1. CA 对证书内容计算 SHA-256 哈希值 2. CA 用私钥对哈希值加密 → 生成数字签名 3. 浏览器用 CA 公钥解密签名 → 对比哈希值 → 验证证书真伪

6. 小结

这一章我们走过了四种核心算法:

  • 对称加密(AES):快,但密钥分发难
  • 非对称加密(RSA/ECC):解决了密钥分发,但慢
  • 哈希函数(SHA-256):不可逆的指纹,用于摘要
  • 数字签名:私钥签名 + 公钥验签,保证身份和完整性

这些算法不是孤立的。在证书链中,它们协同工作:非对称加密传递对称密钥,哈希函数做摘要,数字签名确保证书不被篡改。你理解了这些,后面搭建证书链时就会觉得顺理成章。

一句话总结:加密算法是证书链的砖瓦。砖瓦质量好,房子才结实。别急着跳过去,把这一章吃透,后面你会感谢自己的。