RSA加密算法
1.什么是RSA
RSA是一種公鑰加密算法,可用于公鑰加密和數(shù)字簽名
2.RSA加密
RSA加密過(guò)程可用下面的公式表達(dá)
密文=(明文^E) mod N
RSA的密文等于明文代表數(shù)字的E次方除以N 的余數(shù)
整個(gè)過(guò)程十分簡(jiǎn)單,只要知道E,N就能對(duì)明文進(jìn)行加密。所以E,N的組合就是公鑰。寫成“公鑰是{E,N}”
3.RSA解密過(guò)程
RSA解密也十分簡(jiǎn)單可用下面公式表達(dá):
明文=(密文^D)mod N
所以D,N代表私鑰(由于N是公鑰的一部分,所以也可用說(shuō)D是私鑰)
下面就介紹如何生成E,D,N
4.密鑰對(duì)生產(chǎn)
RSA密鑰生成的步驟:
(1)求N
(2)求L (L是僅在生成密鑰對(duì)的過(guò)程中使用的數(shù))、
?。?)求E
?。?)求D
1.求N
首先找到兩個(gè)很大的素?cái)?shù)p,q
N=p*q (如果p,q太小密碼會(huì)變得很容易破譯)
2.求L
L是p-1,q-1的最小公倍數(shù)用lcm(p-1,q-1)表示
L=lcm(p-1,q-1)
3.求E
E是一個(gè)比1大,比L小的數(shù)。此外,E和L互質(zhì)(最大公約數(shù)為1)
1<E<L gcd(E,L)=1
找出gcd(E,L)=1的數(shù),還要使用偽隨機(jī)數(shù)生成器,生成大于1,小于L的E。再判斷gcd(E,L)是否等于1.可用歐幾里得輾轉(zhuǎn)相除法求最大公約數(shù)
滿足gcd(E,L)是為了保證一定存在解密所需要的D
求出E,N就生成了公鑰
4.求D
數(shù)D由E計(jì)算得到。D、E、L之間必須存在下列關(guān)系:
1<D<L E*D mod L=1
求出D 就是擁有了私鑰
5.實(shí)踐
準(zhǔn)備兩個(gè)質(zhì)數(shù)p=17,q=19
N=17*19=323
L=lcm(17-1,19-1)=lcm(16,18)=144
有g(shù)cd(E,L)=1 可用得到E=5,7,11,13,17.……
E的選擇有很多,這里選5,所以公鑰是{E=5,N=323}
D*Emod L=1 E=5 可用找到D=29
所以私鑰為{D=29,N=323}
1.加密
要加密的明文必須是小于N的數(shù)
假設(shè)明文為123
密文=123^5 mod 323=225
2.解密
明文=225^29 mod 323=123
總結(jié)
- 上一篇: web实现远程桌面:Apache Gua
- 下一篇: chrome urls