rsa加密相关基础知识(1)
RSA 基本原理:
选取两个不同的大素数p、q,并计算N=p*q,选取小素数d,并计算e,使d*e % (p-1)(q-1)=1,
对于任意A
则A=B**e % N
可见d、e形成了非对称秘钥关系,加密者用公钥d加密,解密者可用私钥e解密,第三者即使拦截了密文B、公钥d和N,在不知道p、q的前提下,无法推算出e,从而无法获得明文A。当N取非常大的值时,将其因式分解成p、q是非常困难的,例如当N为1024 bit时,据分析,需动用价值数千万美金的大型计算机系统并耗费一年的时间。
质数与互质关系:
质数又称素数,指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
互质关系:两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系(coprime)
1.任意两个质数构成互质关系,比如13和61。
2. 一个数是质数,另一个数只要不是前者的倍数,两者就构成互质关系,比如3和10。
3. 如果两个数之中,较大的那个数是质数,则两者构成互质关系,比如97和57。
4. 1和任意一个自然数是都是互质关系,比如1和99。
5. p是大于1的整数,则p和p-1构成互质关系,比如57和56。
6. p是大于1的奇数,则p和p-2构成互质关系,比如17和15。
欧拉函数:任意给定正整数n,计算在小于等于n的正整数之中,有多少个与n构成互质关系。计算这个值的方法叫做欧拉函数。以φ(n)表示。如φ(6)=2,因为在1到6之中,与6形成互质关系的有1,5。
欧拉函数的计算分为5种情况:
1. n=1,φ(1)=1
2.n是质数,φ(n)=n-1.质数与每个小于它的数都构成互质关系
3.n是质数的k次方,比如n=p^k, p是质数。φ(n)=p^k-p^(k-1)。在小于等于n的数字中,只有不包含因数p的数字才能与n互质。包含p的数字为 1*p,2*p,3*p。。。p^(k-1)*p 一共有p^(k-1)个。
4. n是两个质数的乘积,n=a*b, φ(n)=φ(a)*φ(b)
5.任意大于1的整数都可以拆成一系列质数的乘积。此时φ(n)=n*(1- p1^-1)(1-p2^-1)...(1-pn^-1). 可通过情况3与情况4推导出来。
欧拉定理:
两个正整数a和n互质,则n的欧拉函数φ(n)可以让下面的式子成立: aφ(n)≡1 (mod n)
如果n为质数则 an-1≡1(modn). 此为费马小定理
模反元素:
如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除。即 ab≡1(modn) .可用欧拉定理证明b一定存在