RSA算法是公钥加密领域最经典的技术之一,因其安全性高常用于数字签名、身份认证等场景。以下从原理到实践逐步解析:
1. 核心原理 🧠
- 数学基础:基于大整数分解难题,选择两个大质数 $ p $ 和 $ q $,计算模数 $ n = p \times q $
- 密钥生成:
- 计算欧拉函数 $ \phi(n) = (p-1)(q-1) $
- 选择公开指数 $ e $(需满足 $ 1 < e < \phi(n) $ 且 $ \gcd(e, \phi(n))=1 $)
- 通过扩展欧几里得算法求得私钥 $ d $,满足 $ ed \equiv 1 \mod \phi(n) $
- 加密解密:
- 加密:$ c = m^e \mod n $
- 解密:$ m = c^d \mod n $
2. 实现示例 🧪
import math
def rsa_encrypt(m, e, n):
"""加密函数"""
return pow(m, e, n)
def rsa_decrypt(c, d, n):
"""解密函数"""
return pow(c, d, n)
# 示例参数(实际应用需使用足够长的密钥)
p, q = 61, 53
n = p * q
phi = (p-1)*(q-1)
e = 17
d = 2753
message = 123
encrypted = rsa_encrypt(message, e, n)
decrypted = rsa_decrypt(encrypted, d, n)
3. 安全性考量 ⚠️
- 密钥长度建议:至少2048位(当前推荐4096位)
- 避免使用小指数 $ e $(如3),可采用OAEP填充方案增强安全性
- 定期更新密钥,防范量子计算威胁
4. 扩展阅读 📚
📌 注意:以上示例仅用于教学演示,实际应用需使用经过验证的加密库(如Python的cryptography模块)