# RSA算法
# 1. 历史
1977年,三位数学家RonRivest、Adi Shamir 和 Leonard Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。
# 2. 密钥生成
- 随机选择两个不相等的质数
和 - 计算
- 选择一个整数
,满足 - 计算
的模反元素 ,满足 - 公钥为
,密钥为
# 3. 加密和解密
- 加密明文
,
- 解密密文
,
# 4. 举例
- 爱丽丝选择了
, 计算
- 爱丽丝选择
,解同余方程
使用扩展欧几里得算法解方程
得到
3. 公钥为
4. 鲍勃使用公钥加密明文'A'=65
- 爱丽丝用私钥解密
# 5. 证明
根据加密规则
下面证明下面的公式成立
将C代入要我们要证明的那个解密规则:
它等同于求证
由于
所以
将ed代入得到:
接下来,分成两种情况证明上面这个式子。
# 5.1 与 互质
根据欧拉定理,此时
得到
原式得到证明。
# 5.2 与 不是互质关系
此时,由于
以
进一步得到
即
将它改写成下面的等式
这时
因为
原式得到证明。
# 6. 密钥对的个数
对于选定的
由于
对于
比如
所以一共有64对密钥
# 7. 交换律
当通信的双方使用模数相等的RSA算法时,RSA算法满足交换律,也就是说Alice使用的密钥为
那么