1.RSA 非对称加密算法的一种。
2.一些基础知识:
1) gcd(a, b) 为a, b的最大公约数,如果gcd(a, b) = 1,则称a, b 互素。
2) 模运算, mod。如果(a mod n) = (b mod n),则称a与b模n同余。
3)欧拉函数,定义φ(n)为欧拉函数,那么φ(n)的值为比n小并且与n互为素数的正整数的个数。比如φ(9) = |{8, 7, 5,4,2,1}|=6。
4)欧拉函数的性质1:如果p是素数,则φ(p) = p - 1,例如φ(7) = |{6, 5, 4, 3, 2, 1}| = 6。
5)欧拉函数的性质2:如果p, q是素数,则 φ(p*q) = (p-1) * (q - 1)。
6)欧拉定理:在数论中,欧拉定理(也称费马-欧拉定理)是一个关于同余的性质。欧拉定理表明,若n,a为正整数,且n,a互质,gcd(a,n) = 1,则a^φ(n) ≡ 1 (mod n)。例如a = 3, n = 5,gcd(3,5) = 1,φ(n) = φ(5) = 5 -1 = 4, a^φ(n) = 3^4 = 81, 81 mod 5 = 1,满足欧拉定理。
7)欧拉定理的证明:
首先证明下面这个命题:
对于集合Zn={x1,x2,...,xφ(n)},其中xi(i=1,2,…φ(n))是不大于n且与n互素的数,即n的一个化简剩余系,或称简系,或称缩系),考虑集合S = {a*x1(mod n),a*x2(mod n),...,a*xφ(n)(mod n)}
则S = Zn
1) 由于a,n互质,xi也与n互质,则a*xi也一定于n互质,因此
任意xi,a*xi(mod n) 必然是Zn的一个元素
2) 对于Zn中两个元素xi和xj,如果xi ≠ xj
则a*xi(mod n) ≠ a*xj(mod n),这个由a、n互质和消去律可以得出。
所以,很明显,S=Zn
既然这样,那么
(a*x1 × a*x2×...×a*xφ(n))(mod n)
= (a*x1(mod n) × a*x2(mod n) × ... × a*xφ(n)(mod n))(mod n)
= (x1 × x2 × ... × xφ(n))(mod n)
考虑上面等式左边和右边
左边等于([a^φ(n)] *(x1 × x2 × ... × xφ(n))) (mod n)
右边等于x1 × x2 × ... × xφ(n))(mod n)
而x1 × x2 × ... × xφ(n)(mod n)和n互质
根据消去律,可以从等式两边约去,就得到:
a^φ(n) ≡ 1 (mod n)
3.RSA算法的操作过程
1)取两个大素数p, q,保密。计算n = p * q,公开n。
2)计算欧拉函数φ(n) = (p - 1) * (q - 1);
3)任意取一个与互为素数的小整数e,则gcd(e, φ(n)) = 1,