RSA加密演算法的初步學習,以及簡單使用。

2022-06-18 08:51:14 字數 1570 閱讀 4069

rsa是乙個比較完善的公開的完善的金鑰演算法,他技能用於加密,也能用與數字簽名。這個演算法經過多年的深入密碼研究,雖然密碼分析者,既不能證明也不能否認rsa的安全性。但這恰恰證明該演算法有一定的可信度。目前他已經成為最流行的公開金鑰演算法。

rsa的安全基於大數分解的難度,其公鑰和私鑰是一對大素數的函式,從乙個公鑰和密文恢復除明文的難度,相當於兩個大素數之積。

rsa的公鑰、私鑰的組成,以及加密和解密演算法公式可以見如下表:

可能好久沒喲接觸數學了,看到這些公式不免一頭霧水,別急,在沒有正式講解rsa加密演算法之前,讓我們複習一下幾個基本概念,然後在後邊介紹他中的用途。

一 :什麼是素數

素數是這樣的數,他除了可以表示自己和1的乘積之外,不能表示任何其他的兩個整數的乘積。例如15 = 3* 5 。15不是素數。13 是素數。素數也稱之為質數。

二:什麼是互素數,什麼叫互質數

小學教材是這樣對互質數定義的,公約數為1的兩個數,叫做互質數。這裡說的兩個數是指的互質數。

(1)兩個質數一定是互質數。例如,2與7、13與19。

(2)乙個質數如果不能整除另乙個合數,這兩個數為互質數。例如,3與10、5與26。

(3)1不是質數也不是合數,它和任何乙個自然數在一起都是互質數。如1和9908。

(4)相鄰的兩個自然數是互質數。如15與16。

(5)相鄰的兩個奇數是互質數。如49與51。

(6)大數是質數的兩個數是互質數。如97與88。

(7)小數是質數,大數不是小數的倍數的兩個數是互質數。如7和16。

(8)兩個數都是合數(二數差又較大),小數所有的質因數,都不是大數的約數,這兩個數是互質數。如357與715,357=3×7×17,而3、7和17都不是715的約數,這兩個數為互質數。等等。

三:什麼是模指數運算。

指數運算誰都懂,什麼叫模運算,m mod n的含義讓m去除以n只取取得的餘數作為結果,這叫做模運算。例如10 mod 3  =1;28 mod 2 =0;莫指數運算是先做指數運算在做模運算。如53 mod 7=125 mod 7=6

四: 正式開始rsa演算法

1.先去一對足夠大的素數,p,q

2..計算n = p*q;

3. 計算f(n)= (p-1)(q-1); 同時對p和q嚴格保密,不讓任何人知道。

4 找乙個與f(n)互質的數e 並e(1,f(n));

5. 計算d,使得de≡1mod f(n)。這個公式也可以表達為d≡e-1 mod f(n)

這裡要解釋一下,≡是數論中表示同餘的符號。公式中,≡符號的左邊必須和符號右邊同餘,也就是兩邊模運算結果相同。顯而易見,不管f(n)取什麼值,符號右邊1 mod f(n)的結果都等於1;符號的左邊d與e的乘積做模運算後的結果也必須等於1。這就需要計算出d的值,讓這個同餘等式能夠成立。

(6)公鑰ku=(e,n),私鑰kr=(d,n)。

(7)加密時,先將明文變換成0至n-1的乙個整數m。若明文較長,可先分割成適當的組,然後再進行交換。設密文為c,則加密過程為:c≡me (mod n)

(8)解密過程為:m≡cd (mod n)

RSA加密演算法

素數是這樣的整數,它除了能表示為它自己和1的乘積以外,不能表示為任何其它兩個整數的乘積。例如,15 3 5,所以15不是素數 又如,12 6 2 4 3,所以12也不是素數。另一方面,13除了等於13 1以外,不能表示為其它任何兩個整數的乘積,所以13是乙個素數。素數也稱為 質數 二 什麼是 互質數...

RSA加密演算法

演算法的描述 1.選取兩個素數p,q 2.計算n p q,fn p 1 q 1 3.選擇乙個整數e,使得e與fn的最大公約數為1,e將會用於對資料進行加密。4.計算出乙個整數d,使得d e除fn的餘數為1。d用於對密文進行解密,還原出明文。5.假設明文為m,密文為c。如果需要對原文進行加密,則進行如...

RSA加密演算法

一 rsa是公鑰加密演算法之一,該演算法的數學基礎是 1 初等數論的euler定理,即 若整數a與整數n互素,則a n 1 mod n 其中,n 為尤拉函式。2 大整數分解很困難,即給定乙個大整數n,將其分解為n p q,兩個素數乘積十分困難。二 rsa基本原理 1 金鑰的生成。選擇大素數p,q,計...