一、密码学基础:对称加密与非对称加密、哈希函数、数字签名概念
各位同学,咱们今天聊密码学基础。说实话,这章是整个课程的基石。你后面要理解签名验签、数据完整性保护,都得先把这几个概念吃透。
我刚开始接触密码学时,总觉得这东西离业务很远。直到有一次做支付接口对接,对方要求对报文做签名,我才发现——嗯,不懂这些,连接口都调不通。从那以后,我再也不敢小看密码学了。
1.1 对称加密:一把钥匙开一把锁
对称加密,说白了就是加密和解密用同一把密钥。你想想看,就像你家大门钥匙——锁门用它,开门也用它。
常见的对称加密算法有:
| 算法 | 密钥长度 | 特点 |
|---|---|---|
| AES | 128/192/256 bit | 目前最主流,安全高效 |
| DES | 56 bit | 已淘汰,密钥太短 |
| 3DES | 112/168 bit | 过渡方案,性能差 |
| SM4 | 128 bit | 国密标准,国内常用 |
对称加密最大的优势是快。我在项目中做过压测,AES-256 加密 1MB 数据,耗时不到 1 毫秒。但问题也明显——密钥怎么安全地传给对方?
1.2 非对称加密:公钥私钥,各司其职
非对称加密解决了密钥分发问题。它有一对密钥:公钥公开,私钥保密。公钥加密的数据只能用私钥解密,反过来私钥加密的数据只能用公钥解密。
为什么会这样?因为它是基于数学难题设计的。比如 RSA 依赖大整数分解,ECC 依赖椭圆曲线离散对数。你想想看,两个大素数相乘很容易,但要把乘积分解回两个素数——难得很。
常见的非对称加密算法:
- RSA:最经典,1024/2048/4096 bit,2048 位以上才安全
- ECC:椭圆曲线,256 bit 相当于 RSA 3072 bit,性能更好
- SM2:国密椭圆曲线算法,国内政企项目必备
我个人习惯,能用 ECC 就不用 RSA。原因很简单——同样安全等级下,ECC 的密钥更短,计算更快。我在一个 IoT 项目里用 ECC 做设备身份认证,密钥对只有 32 字节,设备端存储毫无压力。
1.3 哈希函数:数据的指纹
哈希函数,也叫散列函数。它能把任意长度的数据,压缩成固定长度的摘要。而且这个摘要是唯一的——哪怕原文只改一个比特,摘要都会完全不一样。
哈希函数有几个核心特性:
- 单向性:从摘要反推原文,理论上不可能
- 抗碰撞性:很难找到两个不同数据有相同摘要
- 固定输出:不管输入多大,输出长度固定
常用的哈希算法:
| 算法 | 输出长度 | 安全性 |
|---|---|---|
| MD5 | 128 bit | 已破解,不要用 |
| SHA-1 | 160 bit | 已发现碰撞,不推荐 |
| SHA-256 | 256 bit | 目前安全,推荐使用 |
| SM3 | 256 bit | 国密标准,国内推荐 |
哈希函数在数据完整性保护中至关重要。你下载一个文件,网站会提供 SHA-256 值。你本地算一遍,对比一下——如果一致,说明文件没被篡改。这就是哈希的典型应用。
1.4 数字签名:电子世界的盖章
数字签名,说白了就是电子版的签名盖章。它解决三个问题:
- 身份认证:确认是谁签的
- 不可否认:签了就不能赖账
- 完整性:签名后数据没被改过
数字签名的流程是这样的:
- 发送方对数据做哈希,得到摘要
- 用私钥加密摘要,生成签名
- 把数据和签名一起发给接收方
- 接收方用公钥解密签名,得到摘要 A
- 接收方对数据做哈希,得到摘要 B
- 对比 A 和 B,一致则签名验证通过
你看,这里用到了哈希函数(生成摘要)和非对称加密(加密/解密摘要)。所以我说,前面三个概念是数字签名的基础。
1.5 知识体系总览
下面这张图,把本章的核心概念串起来了。你多看几遍,后面章节都会用到。
1.6 本章小结
这一章我们讲了四个核心概念:
- 对称加密:快,但密钥分发难
- 非对称加密:解决了密钥分发,但慢
- 哈希函数:数据指纹,不可逆
- 数字签名:哈希 + 非对称加密的组合应用
这些概念你记住了,后面讲签名验签的具体实现时,就不会觉得陌生。我个人建议,你可以在本地装个 OpenSSL,亲手试试 AES 加密、RSA 密钥生成、SHA-256 哈希计算。光看不动手,永远记不牢。