1. 项目概述:Python中的RSA与AES加密实战
在当今数字化时代,数据安全已成为开发者必须掌握的核心技能。RSA和AES作为两种最主流的加密算法,分别代表了非对称加密和对称加密的典型实现。Python凭借其丰富的密码学库支持,成为实现这两种加密的理想选择。本文将带你从零开始,完整实现RSA密钥对生成、数据加密解密,以及AES的多种工作模式应用。
我曾在多个金融级项目中实际应用这些加密方案,遇到过各种坑点。比如在跨平台传输RSA加密数据时遇到的填充问题,以及AES-GCM模式中IV重用导致的安全漏洞。这些实战经验都会融入教程,让你少走弯路。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 加密基础与算法选型
2.1 RSA非对称加密原理
RSA算法基于大整数分解的数学难题,其核心流程包括:
- 密钥生成:选择两个大素数p和q,计算n=pq,φ(n)=(p-1)(q-1)
- 选择公钥指数e(通常为65537),计算私钥d满足e*d ≡ 1 mod φ(n)
- 加密过程:ciphertext = plaintext^e mod n
- 解密过程:plaintext = ciphertext^d mod n
在Python中,标准库cryptography的RSA实现默认使用PKCS#1 v1.5填充方案。但更推荐使用OAEP填充,因为它具有更强的安全性:
python复制from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import hashes
private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
public_key = private_key.public_key()
# 推荐使用OAEP填充
encrypted = public_key.encrypt(
message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
2.2 AES对称加密详解
AES(Advanced Encryption Standard)采用分组加密策略,支持128/192/256三种密钥长度。其核心在于多轮的字节代换、行移位、列混淆和轮密钥加操作。常见工作模式包括:
- ECB模式:简单但不安全,相同明文生成相同密文
- CBC模式:需要初始化向量(IV),推荐用于一般场景
- GCM模式:提供认证功能,适合网络传输
实测对比各模式性能(加密1MB数据):
| 模式 | 耗时(ms) | 安全等级 | 适用场景 |
|---|---|---|---|
| ECB | 120 | 低 | 不推荐使用 |
| CBC | 1 |
