rsa演算法是一種基於公鑰和私鑰的加密演算法, 是由ronald rivest, adi shamir和len adleman三人在diffie-helman指數金鑰交換演算法的
基礎上於2023年設計出來的,rivest設計的加密系統利用了數學領域的乙個事實,那就是雖然把兩個大素數相乘生成乙個合數是件很容易
的事, 但要把乙個合數分解為兩個素數卻十分困難。
rsa的安全性依賴於大數分解,公鑰和金鑰都是兩個大素數(大於100個十進位制位)的函式。據猜測,從乙個金鑰和密文推斷出明文的難度
等同於分解兩個大素數之積。
金鑰對的產生,選對兩個大素數p和q,計算
n=p*q
然後隨機選擇加密金鑰e, 要求e和(p-1)*(q-1)互質,最後,利用euclid演算法計算解密金鑰d,滿足
(e*d) mod ((p-1)*(q-1))=1
其中n和d也要互質, 數e和n是公鑰,d是私鑰.現在兩個素數p和q可以丟棄不再需要,不要讓任何人知道.
加密資訊m(二進位制表示)時,首先把m分成等長資料塊m1,m2....mi,塊長s,其中2^s<=n, s盡可能地大.對應的密文是:
ci=mi^e (mod n) (a)
解密時作如下計算:
mi=ci^d (mod n) (b)
rsa可用於數字簽名,方案是用(a)式簽名,(b)式驗證.具體操作時考慮到安全性和m資訊量較大等因素,一般先作hash運算.
rsa演算法示例:
(1) 選擇兩個素數:p=7, q=17
(2) 計算n=p*q=7*17=119
(3) 計算φ(n)=(p-1)*(q-1)=96
(4) 選擇e,e為φ(n)=96的相對素數,要比φ(n)小,本例中e=5
(5) 決定d,使(d*e) mod 96=1,且d<96,正確值為d=77,因為77*5=385=4*96+1.
結果金鑰為公鑰ku=和私鑰kr=
如輸入明文m=19,使用以上金鑰加密:
ci=m^e (mod n)
=19^5 mod 119
=2476099 mod 119
=66解密由66^77 mod 119=19決定.
《黑客防線---口令破解與加密技術》筆記
RSA演算法原理
rsa演算法原理 經過上述準備工作之後,可以得到 根據費爾馬小定義,根據以下公式可以完成解密操作 rsa本身演算法的核心思想還是比較簡單的,加密 解密演算法的區別也只是在乘方取模部分使用的數字有所區別而已 當然,實際運用要比示例 複雜得多,由於rsa演算法的公鑰私鑰的長度 模長度 要到1024位甚至...
RSA演算法原理
rsa演算法是最廣泛使用的非對稱加密演算法。金鑰長度為1024位,特殊情況下比如國家重要的一些東西採用2048位。在理解rsa演算法之前先來看4個數學概念 互質關係 兩個整數,除了1之外沒有其它公因子,就稱這兩個整數具有互質關係。尤拉函式 用 n 表示。例如在1 8中,與8形成互質關係的有4個,那麼...
RSA演算法原理
一 rsa演算法數論 將兩個大素數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密金鑰。二 rsa演算法涉及三個引數,n e1 e2。三 公私鑰生成過程 1 首先,需要兩個大質數,p和q,並且p不等於q。2 n是兩個大質數p q的積。n的二進位制表示時所占用的位數就是...