1 RSA的历史
2 RSA的原理
2.1 欧拉定理
2.2 费马小定理

2.3 欧几里得引理
3 RSA应用过程
3.1 密钥生成
密钥生成的具体过程如下:
1.随机生成两个不同的质数p和q,由此可知p和q互质。此外,p和q的二进制数的bit位长度要相近;判断两个数是否互质一般使用米勒-拉宾素性检测。
2.计算 n = p * q。
3.计算欧拉函数:φ(n) = φ(p)φ(q) = (p − 1)(q − 1) = n - (p + q -1),φ(n)表示与n为互质的小于等于n的正整数的个数。
4.选取e,满足1 < e < φ(n)且e与φ(n)互质,即gcd(e, φ(n)) = 1。e和n构成公共密钥,e的二进制数bit位长度和汉明重量都不能取得太大(对于二进制数来说,汉明重量指的是1的个数,如11101 0B的汉明重量为4),一般取2^16 + 1 = 65,537,e的值越小安全性越差。
5.选取d满足d ≡ (e^−1) (mod φ(n)),即ed ≡ 1(mod φ(n)), d和n构成私有密钥。
3.2 加密过程
假设整数m为明文,则密文,此为
模幂运算。
3.3 解密过程

4 RSA的具体实现过程
4.1 如何生成随机数?
4.2 如何判断一个随机数为质数?
4.2.1 概率性测试
对一个数进行素性检测可以通过多种办法,如费马素性检测、米勒-拉宾素性检测、索尔维-施特拉森素性检测等。这里将详细介绍米勒-拉宾素性检测。
首先,在有限域Z/pZ中,如果某个大于2的整数是素数,则对于公式,x的解不是1(mod
p)就是-1(mode p)。怎么理解?这里我们需要引用欧几里得引理(见上文),公式
可以转换成
因为p是素数