RSA加密算法
前面讲了几个对称加密算法,今天就谈一谈非对称加密算法。非对称加密算法的出现源于对称加密算法的局限性:分发密钥的重要与困难性,无法进行数字签名等原因。非对称加密算法有两把钥匙,一把加密密钥,一把解密密钥。两者既数学相关但又无法相互推导。
非对称加密算法依赖于单向陷门函数。什么是单向函数,即对于y=f(x),知道x可求y,但是知道y不能求x。而单向陷门函数就是在单向函数的基础上加了个陷门,即只有知道陷门信息的人才能通过y求x,而这个陷门信息就是私钥。RSA算法所使用的单向陷门函数为大素数分解的难题(数学上还没有完全证明反向不可推)。
RSA算法步骤:
1.随机选取两个大的素数p,q
2.计算n=p*q,φ(n) = (p-1)(q-1),然后将p,q扔掉
3.随机选取e(1< e < φ(n)),满足gcd(e, φ(n))=1,即e与φ(n) 互质
4.计算d,使得d满足de ≡ 1 (mod φ(n))
5.加密:c=m^e mod n; 解密:m=c^d mod n(其中c为密文,m为明文,n为公共模数,e为加密指数,d为解密指数)
例题(计算必考)
1.p=17,q=11,e=7,m=123,求c。
解:
n=p·q=11·17=187
φ(n)=(p-1)(q-1)=16·10=160
d·e ≡ 1 (mod φ(n))
即d·7 ≡ 1 (mod 160)
160=22·7…6
7=1·6…1
1=7-6=7-(160-22·7)
=23·7-160 (辗转相除法)
∴(23·7-160)mod 160=1
∴d=23
∴c=m^e mod n=123^7 mod 187=183
2.p=17,q=31,e=7,m=2,求c。
解:
n=p·q=17·31=527
φ(n)=(p-1)(q-1)=16·30=480
d·e ≡ 1 (mod φ(n))
d·7 ≡ 1 (mod 480)
480=68·7…4
7=1·4…3