rsa演算法原理
rsa演算法流程
2023年以前,所有的加密方法都是同一種模式:
a選擇某一種加密規則,對資訊進行加密;
b使用同一種規則,對資訊進行解密。
這種加密模式有乙個最大缺點:
加密和解密使用同樣的規則(金鑰),
a必須把金鑰告訴b,否則無法解密。
儲存和傳遞金鑰,就成了最頭疼的問題。
後來出現一種 」diffie-hellman金鑰交換演算法「,它的加密和解密可以使用不同的規則,只要這兩種規則之間存在某種對應關係即可,這樣就避免了直接傳遞金鑰。
b生成公鑰pk跟私鑰sk,公鑰公開任何人都可以獲得,私鑰保密。
a 獲取b的公鑰,然後用b的公鑰進行資訊加密。
b得到加密後的資訊,用自己的私鑰解密。
所以如果公鑰加密的資訊只有私鑰解得開,那麼只要私鑰不洩漏,通訊就是安全的。
rsa演算法一直是最廣為使用的非對稱加密演算法。
根據數論,尋求兩個大素數比較簡單,而將它們的乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密金鑰。
舉個例子:
定義函式f為 f(p, q) = pq, pq是兩個大質數,那麼我們很容易通過pq得到 f(p, q)
如果:f(p, q) = 32213114911055087, 求 p, q.
這樣就裂開了,目前還沒有有效演算法。
首先看一下rsa的密碼體制,課本上亂七八糟的字母看不懂也沒關係,至少對這些字母有個印象。
同樣的,我們通過乙個例子來引入:
假設alice要與bob進行加密通訊,注意重點來了,alice首先生成自己的公私鑰對 pk, sk
隨機選擇兩個不相等的質數p和q,(這兩個質數越大,就越難破解),我們為了方便舉例,選取5和11
計算p和q的乘積n 和尤拉函式φ(n)
n = 5×11 = 55
φ(n) = (p-1)(q-1) = 40
隨機選擇乙個整數b,條件是1< b < φ(n),且b與φ(n) 互質…我們就選擇3吧,方便計算
計算b對於φ(n)的模反元素a
a ≡ b-1 (mod φ(n)) ≡ 3-1 mod 40
即:a×3 ≡ 1 mod 40
(有小夥伴可能不知道怎麼得來的。。a = n×40 + 3-1 ,等式兩邊同乘3 即 3a = 3n × 40 + 1)
a×3 ≡ 1 mod 40 =>> 3a - 40y = 1
得: a = 27, y = 2 是上述不定方程的一組解
(實際應用中公鑰和私鑰的資料都採用asn.1格式表達)
至此,我們的公私鑰對生成階段結束,下面開始加密
假設bob要向alice傳送加密資訊x,他就要用alice的公鑰 (n, b) 對x進行加密。
重點:x 必須是整數(字串可以取ascii值),且x必須小於n。
這裡我們例子中的n相對較小,所以我們需要將明文拆開進行多次加密:
假設我們加密明文 987654
乙個乙個來:
ek(x) = xb (mod n) = 93 mod 55 = 14
ek(x) = xb (mod n) = 83 mod 55 = 17
ek(x) = xb (mod n) = 73 mod 55 = 13
ek(x) = xb (mod n) = 63 mod 55 = 51
ek(x) = xb (mod n) = 53 mod 55 = 15
ek(x) = xb (mod n) = 43 mod 55 = 9
最終明文結果為:14 17 13 51 15 9
然後 alice用自己的私鑰進行解密:
dk(y) = ya (mod n) =1427 mod 55 = 9
dk(y) = ya (mod n) =1727 mod 55 = 8
dk(y) = ya (mod n) =1327 mod 55 = 7
dk(y) = ya (mod n) =5127 mod 55 = 6
dk(y) = ya (mod n) =1527 mod 55 = 5
dk(y) = ya (mod n) =927 mod 55 = 4
計算出明文:987654
RSA演算法簡介
rsa演算法簡介 1 簡介 當前最著名 應用最廣泛的公鑰系統rsa是在1978年,由美國麻省理工學院 mit 的rivest shamir和adleman在題為 獲得數字簽名和公開鑰密碼系統的方法 的 中提出的。它是乙個基於數論的非對稱 公開鑰 密碼體制,是一種分組密碼體制。其名稱來自於三個發明者的...
RSA演算法簡介
rsa演算法是 r rirest asllalnlr和l adleman於1977年在美國麻省理工學院開發,於1978年首次公布,其演算法如下 a 選擇兩質數p q。b 計算n p q。c 計算n的尤拉函式 n p 1 q 1 d 選擇整數e,使e與 n 互質,且1 利用rsa加密,首先需將明文數位...
RSA演算法簡介
rsa演算法是一種非對稱性加密演算法,現在算是最具有影響力的演算法,簡單來說rsa演算法運用了 乙個大整數進行因式分解具備一定的難度 這個數學知識來進行加密,對乙個極大整數做因式分解越難,那麼想要破解加密過後的密碼就越難。在了解rsa演算法之前,先要了解以下幾個知識點 如果兩個正整數,除了1以外,沒...