對稱加密 DES 與非對稱加密 RSA

2021-07-30 23:23:17 字數 2672 閱讀 6927

對稱加密和非對稱加密都有分國際演算法和國密演算法。

對稱加密:des(國際演算法), sm4(國密演算法)

非對稱加密:rsa(國際演算法),sm2(國密演算法)

rsa的公鑰、私鑰的組成,以及加密、解密的公式可見於下表:

素數是這樣的整數,它除了能表示為它自己和1的乘積以外,不能表示為任何其它兩個整數的乘積。

公約數只有1的兩個數,叫做互質數。

讓m去被n整除,只取所得的餘數作為結果,就叫做模運算。例如,10 mod 3=1;26 mod 6=2;28 mod 2 =0等等。

例項描述:

1)設若甲有乙份需保密的數字商業合同發給乙簽署。經過如下步驟:

1. 甲用乙的公鑰對合同加密。

2. 密文從甲傳送到乙。

3. 乙收到密文,並用自己的私鑰對其解密。

4. 解密正確,經閱讀,乙用自己的私鑰對合同進行簽署。

5. 乙用甲的公鑰對已經簽署的合同進行加密。

6. 乙將密文發給甲。

7. 甲用自己的私鑰將已簽署合同解密。

8. 解密正確,確認簽署。

2)在這篇科普小文章裡,不可能對rsa演算法的正確性作嚴格的數學證明,但我們可以通過乙個簡單的例子來理解rsa的工作原理。為了便於計算。在以下例項中只選取小數值的素數p,q,以及e,假設使用者a需要將明文「key」通過rsa加密後傳遞給使用者b,過程如下:

(1)設計公私金鑰(e,n)和(d,n)。

令p=3,q=11,得出n=p×q=3×11=33;f(n)=(p-1)(q-1)=2×10=20;取e=3,(3與20互質)則e×d≡1 mod f(n),即3×d≡1 mod 20。

d怎樣取值呢?可以用試算的辦法來尋找。試算結果見下表:

通過試算我們找到,當d=7時,e×d≡1 mod f(n)同餘等式成立。因此,可令d=7。從而我們可以設計出一對公私金鑰,加密金鑰(公鑰)為:ku =(e,n)=(3,33),解密金鑰(私鑰)為:kr =(d,n)=(7,33)。

(2)英文數位化。

將明文資訊數位化,並將每塊兩個數字分組。假定明文英文本母編碼表為按字母順序排列數值,即:

則得到分組後的key的明文資訊為:11,05,25。

(3)明文加密 

使用者加密金鑰(3,33) 將數位化明文分組資訊加密成密文。由c≡me(mod n)得:

因此,得到相應的密文資訊為:11,31,16。

(4)密文解密。

使用者b收到密文,若將其解密,只需要計算

使用者b得到明文資訊為:11,05,25。根據上面的編碼表將其轉換為英文,我們又得到了恢復後的原文「key」。 

rsa的缺點:

a)產生金鑰很麻煩,受到素數產生技術的限制,因而難以做到一次一密。b)分組長度太大,為保證安全性,n 至少也要 600 bits 以上,使運算代價很高,尤其是速度較慢,較對稱密碼演算法慢幾個數量級;且隨著大數分解技術的發展,這個長度還在增加,不利於資料格式的標準化。因此,使用rsa只能加密少量資料,大量的資料加密還要靠對稱密碼演算法。

總之就是雙方拿著同乙個金鑰,不用傳輸金鑰。定期更新就好。

1)取得金鑰

從使用者處取得乙個64位(本文如未特指,均指二進位制位))長的密碼key,去除64位密碼中作為奇偶校驗位的第8、16、24、32、40、48、56、64位,剩下的56位作為有效輸入金鑰.

2)等分金鑰

表1. 

57 49 41 33 25 17 9 

1 58 50 42 34 26 18 

10 2 59 51 43 35 27 

19 11 3 60 50 44 36 

表2.63 55 47 39 31 23 15 

7 62 54 46 38 30 22 

14 6 61 53 45 37 29 

21 13 5 28 20 12 4

3)把在1步中生成的56位輸入金鑰分成均等的a,b兩部分,每部分為28位,參照表1和表2把輸入金鑰的位值填入相應的位置. 按照表1所示a的第一位為輸入的64位金鑰的第57位,a的第2位為64位金鑰的第49位,...,依此類推,a的最後一位最後一位是64位金鑰的第36位。

4)金鑰移位

表3. i 1 2 3 4 5 6 7 8 

ǿ  1 1 2 2 2 2 2 2 

i 9 10 11 12 13 14 15 16 

ǿ 1 2 2 2 2 2 2 1

des演算法的金鑰是經過16次迭代得到一組金鑰的,把在1.1.2步中生成的a,b視為迭代的起始金鑰,表3顯示在第i次迭代時金鑰迴圈左移的位數. 比如在第1次迭代時金鑰迴圈左移1位,第3次迭代時金鑰迴圈左移2位. 

第9次迭代時金鑰迴圈左移1位,第14次迭代時金鑰迴圈左移2位.

第一次迭代:

a(1) = ǿ(1) a 

b(1) = ǿ(1) b

第i次迭代:

a(i) = ǿ(i) a(i-1)

b(i) = ǿ(i) b(i-1)

對稱加密與非對稱加密

概述目前存在兩種加密方法 一種是對稱加密 另稱私鑰加密 一種是不對稱加密 另稱公鑰加密 對稱加密 對稱加密是一種最古老也最有名的加密技術。它對加密的內容應用乙個私鑰 可以是乙個數字,乙個單詞,或者是一隨機字串 按照一定的規則進行改變,從而達到加密的目的。一種簡單的情形是把每個字母在字母表中往前或往後...

對稱加密與非對稱加密

什麼是加密?加密分為演算法和秘鑰兩部分。演算法是不變的,秘鑰是變化的,看下面的例子。秘鑰 abcedfgh 12345678。演算法 明文中每一位都換成秘鑰表中的另乙個位。例如adfh經過加密後為1568。加密金鑰k和解密金鑰k 是一樣的則為對稱加密。對稱加密的優點 加密速度快。對稱加密的缺點 金鑰...

對稱加密與非對稱加密

對稱加密是最快速 最簡單的一種加密方式,加密 encryption 與解密 decryption 用的是同樣的金鑰 secret key 對稱加密有很多種演算法,由於它效率很高,所以被廣泛使用在很多加密協議的核心當中。對稱加密通常使用的是相對較小的金鑰,一般小於256 bit。因為金鑰越大,加密越強...