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)是私鑰。