1. 程式人生 > >3DES對稱演算法之雙倍長金鑰演算法和三倍長金鑰演算法

3DES對稱演算法之雙倍長金鑰演算法和三倍長金鑰演算法

一般我們用的3Des演算法,大部分都是指雙倍長金鑰演算法,最近在閱讀某知名公司技術文件時發現,3DES演算法還有一種三倍長金鑰演算法。


演算法工具也側面印證了這個說法:


那麼這兩個演算法有什麼區別呢?

3DES,分為2種,一個是雙倍長3DES,一個是三倍長3DES。
如果是雙倍長3DES,金鑰為16位元組長,按左右,分別LK(金鑰的左邊8位元組),RK(金鑰的右邊8位元組)。加密內容DATA最長為24位元組。


假設

單倍長DES加密過程為:DES( data, key, dest ),其中,data為被加密資料,key為加密金鑰,dest為加密結果。
單倍長DES解密過程為:UDES(data, key, dest ),其中,data為被解密的資料,key為解密金鑰,dest為解密結果。


雙倍長3DES的加密方法:
DES( DATA, LK, TMP1 );
UDES( TMP1, RK, TMP2 );
DES(TMP2 , LK, DEST );

DEST是最終得到的密文。具體過程簡述如下:
1)使用金鑰的前8位元組,對資料DATA進行加密,得到加密的結果TMP1;
2)使用金鑰的後8位元組,對第一的計算結果TMP1,進行解密,得到解密的結果TMP2;
3)再次使用金鑰的前8位元組,對第二次的計算結果TMP2,進行加密,得到加密的結果DEST。DEST就為最終的結果。

三倍長3DES的加密方法:

對於三倍長3DES,金鑰長度的為24節長。可以分為LK(金鑰的左邊8位元組),CK(金鑰的中間8位元組),RK(金鑰的左邊8位元組)。與二倍長3DES的加密過程基本相同,

只是第一次計算,使用金鑰LK;第二次計算,使用金鑰CK;第三次計算,使用金鑰LK。基本過程如下:
DES( DATA, LK, TMP1 );
UDES( TMP1, CK, TMP2 );
DES( TMP2, RK, DEST );

3倍長金鑰解密過程:把上面過程逆向解密,注意金鑰順序需要逆向使用

DES( TMP2, RK, DEST );

UDES( TMP1, CK, TMP2 );

DES( DATA, LK, TMP1 );

總結一下三種演算法的區別:


資料參考:http://blog.sina.com.cn/s/blog_633685790101g8m3.html,原文有些地方不準確,稍作了修改。