1.RSA算法是非对称算法,密钥越长,越难破解。
2.互质关系(互质即除了1这个公因子,没有其它公因子)
(1)任何两个质数构成互质关系,比如5,13
(2)一个数为质数,另一个数只要不是它的前者的倍数,就可以构成互质关系。
(3)若两个数中,最大的数是质数,则两者构成互质关系,如57和97
(4)1和任何一个自然数构成互质关系,如1和99
(5)p是大于1的整数,则p和p-1构成互质关系,如12和13
(5)p是大于1的奇数,则p和p-2构成互质关系,如15和17
3.例子
密钥的生成过程
-
随意选择两个大的素数p和q,p不等于q,计算n = pq.
-
根据欧拉函数的性质3,求得r=φ(n)=φ§φ(q)=(p-1)(q-1).
-
选择一个小于r的整数e,且e与r互素;并求得e关于r的模反元素,命名为d.(模反元素存在,当且仅当e与r互质; 求d令ed≡1(mod r))
-
将p和q的记录销毁
其中(n,e)是公钥,(n,d)是私钥. 例如: -
A随机选两个不相等的质数61和53,并计算两数的积n=61*53=3233,n的长度就是密钥长度。3233的二进制是110010100001,一共12位,
所以这个密钥就是12位. 实际应用中,RSA密钥一般是1024位,重要的场合是2048位. -
计算n的欧拉函数; φ(n)=(p-1)(q-1)=60*52=3120.
-
A在1到3120上随机选择了一个随机数e=17,与3120互素.
-
计算e对φ(n)的模反元素d,即时,ed-1=kφ(n)。
即使求解:17x+3120y=1.用扩展欧几里得算法求解。可以算出一组解(x,y)=(2753,-15),即d=2753. 公钥(3233, 17),私钥(3233,2753)
至此完成计算.
4.补充
(1)模反元素:如果两个正整数a和n互质,可以找到整数b,使得ab-1被n整除(即ab被n整除的余数是1),b称为a的模反元素。
(2)欧拉函数
欧拉函数 φ(n)定义为小于n且与n互素的正整数的个数,n为素数,则φ(n)=n-1
n=p乘q, (p,q都是素数)
φ(n)=φ(pq)=φ(p)φ(q)
φ(n)=(p-1)(q-1)
eg1:
15=35
8=24
小于15且与15互素的个数为8个。
5.RSA算法实现的具体步骤
(1)随机选择两个不等的质数p,q
(2)计算n=pq
(3)在计算n的欧拉函数φ(n)
(4)随机选择一个整数e,1<e<φ(n),其中e与φ(n)互素
(5)计算e对于φ(n)的模反元素d, edmodφ(n)=1
(6)公钥{e,n},私钥{d,n}
加密:C=M^e modn
解密:M=C^dmod n