质数又称素数,指在大于1的自然数中只能被1和本身整除的数。
与质数相对的概念是合数。
1和0既非质数(素数)也非合数。
互质又称为互素。若N个整数的最大公因子为1,则称这N个整数互质(互素)。
欧拉函数,对于整数N,其欧拉函数是少于或等于N的数中与N互质的数的个数之和。例如,φ(8)=4,因为1,3,5,7均和8互质。
欧拉函数的通式可表示为:
φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数。
RSA算法:
步骤1:选择两个质数p,q
步骤2:计算n = p * q。
步骤3:计算n的欧拉函数
φ(n) = n * (1 - 1/p) * (1- 1/q)
= (p - 1) * (q -1)
步骤4:选择整数e,使e与 φ(n) 互质,且1 < e < φ(n)
步骤5:计算d,使d * e % φ(n) = 1
其中公钥KU = {e, n},私钥KR={d, n}
n的二进制表示所占的位数,就是所谓的密钥长度。