現代密碼-公鑰密碼RSA

纤秾發表於2024-11-10

實驗介紹:

一個金鑰(公鑰)是公開的,另一個金鑰(私鑰)必須保密,且由公鑰求解私鑰的計算是不可行的。

RSA

1選取質數p和q(pq不可公開)

2計算n=pq,φ(n)=(p-1)(q-1)
3隨機選取整數e作為公鑰,要求1<e<φ(n),e和φ(n)互質
如果不互質,就沒有逆元,算不出私鑰。
4計算私鑰d,怎麼計算呢,使用歐幾里得演算法先算出e在φ(n)下的逆元,再求e逆元在modφ(n)下的值。
image

舉例:p=43,q=59,n=pq=43x59=2537.
φ(n)=(p-1)(q-1)=42x58=2436
選取e=13,滿足1<e<φ(n),e和φ(n)互質,ed=1modφ(n)
d=937

加密

image

解密

image
私信發python程式碼

二:RSA數字簽名

在一般加密的情況下,公鑰和私鑰密碼對用的是接受方的。
在RSA數字簽名的情況下,加密用的是私鑰,作為身份的證明。解密使用的是公鑰。

三:RSA安全

共模攻擊

前提:n相同,公鑰不同,公鑰1和公鑰2互質。
使用不同公鑰加密了同一條內容。
密文分別為image
image

低指數攻擊

加密的金鑰e不能小。

p-1和 q-1都應有大的素數因子

防範措施

(1)金鑰長度
2048bit
(2)引數選擇
p和q的長度相差不能太大
p和q的差值不應太小
gcd(p-1,q-1)應儘可能小

相關文章