RSA加密原理簡述


1.了解對稱加密和非對稱加密

1.1什么是對稱加密?

加密和解密使用同樣規則的方法,被稱為“對稱加密算法”。

比如說:甲方選擇某一種加密規則,對信息進行加密。乙方使用同一種規則,對信息進行解密。

特點:

理論上,只要加解密“規則”(即“密鑰”)足夠復雜,這種方式也可安全的傳遞信息。

但這種方法最大的弱點就是,密鑰在傳遞的過程中易被泄露。

常見的對稱加密算法有:DES/3DES/AES

1.2 什么是非對稱加密?

加解密信息的過程中,能讓加密密鑰(公鑰)與解密密鑰(私鑰)不同,這種新的加密模式被稱為“非對稱加密算法”,通常個人保存私鑰,公鑰是公開的。

2.RSA算法介紹

2.1 什么是RSA算法?

RSA是目前最有影響力的公鑰加密算法,算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但那時想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰,即公鑰,而兩個大素數組合成私鑰。

算法由來:

1977年,三位數學家Rivest、Shamir和Adleman設計了一種算法,可以實現非對稱加密。這種算法用他們三個人的名字首字母命名,叫做RSA算法。RSA算法非常可靠,密鑰越長,它就越難破解。

2.2 相關數學理論

2.2.1 什么是“素數”?

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

2.2.2 什么是“互質數”(或“互素數”)?

互質數是這樣定義的:“公約數只有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的約數,這兩個數為互質數。

2.2.3 什么是模指數運算?

  指數運算誰都懂,不必說了,先說說模運算。模運算是整數運算,有一個整數m,以n為模做模運算,即m mod n。怎樣做呢?讓m去被n整除,只取所得的余數作為結果,就叫做模運算。例如,10 mod 3=1;26 mod 6=2;28 mod 2 =0等等。

模指數運算就是先做指數運算,取其結果再做模運算。

2.3 RSA算法實現過程

1. 隨意選擇兩個大的質數p和q,p不等於q,計算N=pq。

2. 根據歐拉函數,不大於N且與N互質的整數個數為(p-1)(q-1)。

3. 選擇一個整數e與(p-1)(q-1)互質,並且e小於(p-1)(q-1)。

4. 用以下這個公式計算d:d× e ≡ 1 (mod (p-1)(q-1))。

5. 將p和q的記錄銷毀。

在以上的內容中,(N,e)是公鑰,(N,d)是私鑰。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM