什么是RSA算法?请简单解释一下。

RSA公钥加密算法是由Ron Rivest,Adi Shamirh和LenAdleman在(麻省理工学院)于1977年开发的。RSA得名于对其名称的发展。RSA是目前最有影响力的公钥加密算法,它可以

它已被ISO推荐为公钥数据加密标准,以抵御迄今为止所有已知的密码攻击。RSA算法是基于一个非常简单的数论事实:两个大素数相乘是非常容易的,但是在当时分解它们的乘积是极其困难的,所以乘积可以作为加密密钥公开。因为大数的计算,RSA最快的情况是比DES慢好几倍,无论是软件还是硬件实现。速度一直是RSA的短板。一般来说,它只用于加密少量数据。RSA的速度比对应相同安全级别的对称密码算法慢1000倍左右。

基础

大数分解和素数检测——两个大素数相乘在计算上很容易实现,但是把乘积分解成两个大素数因子的计算量是如此庞大,在实际计算中根本无法实现。

1.RSA密码系统的建立;

(1)选择两个不同的大素数P和Q;

(2)计算乘积n=pq和φ(n)=(P-1)(Q-1);

(3)选择大于1且小于φ (n)的随机整数E,使得GCD (e,φ(n))= 1;

(4)计算d使得DE = 1 modφ(n);

(5)对于每个密钥k=(n,p,q,d,e),定义加密变换为Ek(x)=xemodn,解密变换为Dk(x)=ydmodn,其中x,y∈Zn;

(6)取{e,n}为公钥,{p,q,d}为私钥。

2.RSA算法示例:

让我们用两个小素数7和17来建立一个简单的RSA算法:

(1)选择两个素数,p=7,q = 17;

(2)计算n=pq=7 17=119,计算φ(n)=(P-1)(Q-1)= 6 16 = 96;

(3)选一个随机整数e=5,小于φ (n) = 96,在96互质;

(4)求d使得de=1mod96和d

(5)输入明文m = 19,计算19的5次方模119,me = 195 = 66 mod 119,发出密文c = 66(6)接收密文66,计算66的77次方模119;CD = 6677≡19 mod 119得到明文19。