RSA加密算法
阿新 • • 發佈:2017-08-18
準備 nbsp 次方 進行 滿足 可用 十分 生成密鑰 隨機數生成器
1.什麽是RSA
RSA是一種公鑰加密算法,可用於公鑰加密和數字簽名
2.RSA加密
RSA加密過程可用下面的公式表達
密文=(明文^E) mod N
RSA的密文等於明文代表數字的E次方除以N 的余數
整個過程十分簡單,只要知道E,N就能對明文進行加密。所以E,N的組合就是公鑰。寫成“公鑰是{E,N}”
3.RSA解密過程
RSA解密也十分簡單可用下面公式表達:
明文=(密文^D)mod N
所以D,N代表私鑰(由於N是公鑰的一部分,所以也可用說D是私鑰)
下面就介紹如何生成E,D,N
4.密鑰對生產
RSA密鑰生成的步驟:
(1)求N
(2)求L (L是僅在生成密鑰對的過程中使用的數)、
(3)求E
(4)求D
1.求N
首先找到兩個很大的素數p,q
N=p*q (如果p,q太小密碼會變得很容易破譯)
2.求L
L是p-1,q-1的最小公倍數用lcm(p-1,q-1)表示
L=lcm(p-1,q-1)
3.求E
E是一個比1大,比L小的數。此外,E和L互質(最大公約數為1)
1<E<L gcd(E,L)=1
找出gcd(E,L)=1的數,還要使用偽隨機數生成器,生成大於1,小於L的E。再判斷gcd(E,L)是否等於1.可用歐幾裏得輾轉相除法求最大公約數
滿足gcd(E,L)是為了保證一定存在解密所需要的D
求出E,N就生成了公鑰
4.求D
數D由E計算得到。D、E、L之間必須存在下列關系:
1<D<L E*D mod L=1
求出D 就是擁有了私鑰
5.實踐
準備兩個質數p=17,q=19
N=17*19=323
L=lcm(17-1,19-1)=lcm(16,18)=144
有gcd(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的數
假設明文為123
密文=123^5 mod 323 =225
2.解密
明文=225^29 mod 323=123
RSA加密算法