什么是RSA
RSA是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出。RSA使用一对密钥:公钥用于加密,私钥用于解密。
RSA算法的安全性基于大整数因子分解的困难性。目前1024位以上的RSA密钥被认为是安全的,推荐使用2048位或4096位的密钥。
加密原理
RSA加密的核心步骤:
- 选择两个大质数p和q,计算n = p * q
- 计算欧拉函数φ(n) = (p-1) * (q-1)
- 选择公钥指数e,满足1 < e < φ(n)且e与φ(n)互质
- 计算私钥指数d,使得(e * d) mod φ(n) = 1
- 公钥为(n, e),私钥为(n, d)
使用方法
RSA的典型使用场景:
加密通信:发送方使用接收方的公钥加密数据,接收方使用自己的私钥解密。
数字签名:发送方使用自己的私钥对数据进行签名,接收方使用发送方的公钥验证签名。
密钥交换:使用RSA加密对称密钥,实现安全密钥交换。
对称vs非对称
对称加密:加密和解密使用同一个密钥,速度快,适合大量数据加密。代表算法有AES、DES。
非对称加密:加密和解密使用不同的密钥,速度慢,适合小数据量加密和密钥交换。代表算法有RSA、ECC。
实际应用中通常结合两者:使用非对称加密传输对称密钥,再使用对称加密传输实际数据。
安全建议
1. 使用足够长的密钥:推荐使用2048位或4096位的RSA密钥。
2. 保护私钥安全:私钥必须严格保密,建议使用硬件安全模块存储。
3. 使用安全的填充方案:推荐使用OAEP填充方案,避免使用PKCS#1 v1.5。