RSA公钥加密算法原理
RSA公钥加密算法基于大整数因式分解困难这样的事实。
选择两个素数,p,q。(一般p,q选择很大的数)
然后计算 z=p*q f=(p-1)(q-1) 选择一个n,使gcd(n,f)=1(gcd代表greatest common divider,一般n也选择一个素数), n和z就作为公钥。
选择一个s,0<s<f,满足n*s % f=1,s就作为私钥。
为了发送一个整数a,0<a<z-1,发送者通过接收者的公钥计算 c=a^n % z,然后发送c。
解密这个数就计算c^s % z。
在计算a^n %z时,如果n比较大,那么采用通常的方法计算会非常困难,可以采用下面的公式来计算
a*b % z=[(a % z)(b % z)] mod z (容易证明)
例如:计算572^29 mod 713, 29=16+8+4+1(基于2的表示) 572^2 % 713=327184 % 713 =630 572^4 % 713=[(572^2 % 713)(572^2 % 713)] % 713=630^2 % 713=472 ...
选择两个素数,p,q。(一般p,q选择很大的数)
然后计算 z=p*q f=(p-1)(q-1) 选择一个n,使gcd(n,f)=1(gcd代表greatest common divider,一般n也选择一个素数), n和z就作为公钥。
选择一个s,0<s<f,满足n*s % f=1,s就作为私钥。
为了发送一个整数a,0<a<z-1,发送者通过接收者的公钥计算 c=a^n % z,然后发送c。
解密这个数就计算c^s % z。
在计算a^n %z时,如果n比较大,那么采用通常的方法计算会非常困难,可以采用下面的公式来计算
a*b % z=[(a % z)(b % z)] mod z (容易证明)
例如:计算572^29 mod 713, 29=16+8+4+1(基于2的表示) 572^2 % 713=327184 % 713 =630 572^4 % 713=[(572^2 % 713)(572^2 % 713)] % 713=630^2 % 713=472 ...
浙公网安备 33010602011771号