對稱加密和非對稱加密都有分國際演算法和國密演算法。
對稱加密: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。因為金鑰越大,加密越強...