OpenSSL編程-3DES編程詳解
一. 3DES加密原理
3DES(或稱爲Triple DES)是三重數據加密算法(TDEA,Triple Data Encryption Algorithm)塊密碼的通稱。它相當於是對每個數據塊應用三次DES加密算法。由於計算機運算能力的增強,原版DES密碼的密鑰長度變得容易被暴力破解;3DES即是設計用來提供一種相對簡單的方法,即通過增加DES的密鑰長度來避免類似的攻擊,而不是設計一種全新的塊密碼算法。
3DES(即Triple DES)是DES向AES過渡的加密算法(1999年,NIST將3-DES指定爲過渡的加密標準),加密算法,其具體實現如下:設Ek()和Dk()代表DES算法的加密和解密過程,K代表DES算法使用的密鑰,P代表明文,C代表密文,這樣:
3DES加密(EDE)過程爲:C=Ek3(Dk2(Ek1(P)))
3DES解密(DED)過程爲:P=Dk1(EK2(Dk3(C)))
二. 3DES API
1. 基本數據結構
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
2. 基本宏定義
1 2 |
|
3. 設置密鑰函數
1 2 3 4 5 6 7 8 9 10 11 |
|
4. 3DES ECB模式加解密API
1 2 3 4 5 6 7 8 9 10 |
|
5. 3DES CBC模式加解密API
1 2 3 4 5 6 7 8 9 10 11 12 |
|
三. 3DES 示例
1. 3DES ECB模式示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
|
2. 3DES CBC模式示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
|
3. 輸出結果
1 2 3 4 5 6 7 8 9 |
|
由結果可見,ECB和CBC模式的第一個8字節加密結果一致,而CBC模式的第二個8字節起會不斷變化,同時,如果k1=k2=k3,則加密結果和DES加密算法相同。
四. HEX轉換函數
請參考前面的Blog:《OpenSSL編程-DES編程詳解》