3DES

1981年發明的三重數據加密演演算法

3DES(或稱為Triple DES)是三重數據加密演演算法(TDEA,Triple Data Encryption Algorithm)塊密碼的通稱。它相當於是對每個數據塊應用三次DES加密演演算法。由於計算機運算能力的增強,原版DES密碼的密鑰長度變得容易被暴力破解;3DES即是設計用來提供一種相對簡單的方法,即通過增加DES的密鑰長度來避免類似的攻擊,而不是設計一種全新的塊密碼演演算法。

演演算法介紹


3DES
3DES
3DES又稱Triple DES,是DES加密演演算法的一種模式,它使用2條不同的56位的密鑰對 數據進行三次加密。數據加密標準(DES)是美國的一種由來已久的加密標準,它使用對稱密鑰加密法,並於1981年被ANSI組織規範為ANSI X.3.92。DES使用56位密鑰和密碼塊的方法,而在密碼塊的方法中,文本被分成64位大小的文本塊然後再進行加密。比起最初的DES,3DES更為安全。
3DES(即Triple DES)是DES向AES過渡的加密演演算法(1999年,NIST將3-DES指定為過渡的加密標準),加密演演算法,其具體實現如下:設Ek()和Dk()代表DES演演算法的加密和解密過程,K代表DES演演算法使用的密鑰,M代表明文,C代表密文,這樣:
3DES加密過程為:C=Ek3(Dk2(Ek1(M)))
3DES解密過程為:M=Dk1(EK2(Dk3(C)))

歷史發展


3DES(即Triple DES)是DES向AES過渡的加密演演算法,它使用3條56位的密鑰對數據進行三次加密。是DES的一個更安全的變形。它以DES為基本模塊,通過組合分組方法設計出分組加密演演算法。比起最初的DES,AES更為安全。

加密過程


3DES加密過程為:C=Ek3(Dk2(Ek1(P)))
3DES解密過程為:P=Dk1(EK2(Dk3(C)))
具體的加/解密過程如圖所示。
K1、K2、K3決定了演演算法的安全性,若三個密鑰互不相同,本質上就相當於用一個長為168位的密鑰進行加密。多年來,它在對付強力攻擊時是比較安全的。若數據對安全性要求不那麼高,K1可以等於K3。在這種情況下,密鑰的有效長度為112位。

3DES演演算法


3DES演演算法是指使用雙長度(16位元組)密鑰K=(KL||KR)將8位元組明文數據塊進行3次DES加密/解密。如下所示:
Y = DES( KL[DES-1( KR[DES( KL[X] )] )] )
解密方式為:
X = DES-1( KL[DES( KR[DES-1( KL[Y] )] )] )
其中,DES( KL[X] )表示用密鑰K對數據X進行DES加密,DES-1( KR[Y] )表示用密鑰K對數據Y進行解密。
SessionKey的計算採用3DES演演算法,計算出單倍長度的密鑰。表示法為:SK = Session(DK,DATA)
3DES加密演演算法為:
VOID 3DES(BYTE DoubleKeyStr[16], BYTE Data[8], BYTE Out[8])
{
BYTE Buf1[8], Buf2[8];
DES (&DoubleKeyStr[0], Data, Buf1);
UDES(&DoubleKeyStr[8], Buf1, Buf2);
DES (&DoubleKeyStr[0], Buf2, Out);
}

加密標準


1999年,NIST將3-DES指定為過渡的加密標準。

加密實例


Java語言

> 這也不知道是哪個213貼出來的例子
> 加密是幹啥用的?不就是存儲和傳輸的過程防止泄露嗎?
> 需求:創建用戶的時候生成一個ID ,加密後傳給用戶郵箱,用戶從郵箱帶著密文回來了
> 怎麼解?