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)))。
2.河豚算法
BlowFish算法用於加密64位字符串。
BlowFish算法使用兩個“盒子”——無符號長盒子。
在BlowFish算法中,有壹個核心的加密函數:BF_En(後面會詳細介紹)。該函數輸入64位信息,運算後以64位密文形式輸出。使用BlowFish算法加密信息需要兩個過程:密鑰預處理和信息加密。
解釋如下:
密鑰預處理:
BlowFish算法的源碼鍵——PBOX和sbox是固定的。如果要加密壹條消息,我們需要自己選擇壹個密鑰,用這個密鑰對pbox和sbox進行變換,得到key_pbox和key_sbox,用於下壹次的信息加密。具體變化算法如下:
1)用sbox填充key_sbox。
2)將pbox與您選擇的8個密鑰進行異或運算,並用異或結果填充key_pbox。鑰匙可以回收。
例如,選擇的鍵是“abcdefghijklmn”。那麽異或過程是:
key _ pbox[0]= pbox[0]abcdefgh;
key _ pbox[1]= pbox[1]ijklmnab;
…………
…………
重復這個循環,直到key_pbox被填滿。
3)用BF_En加密壹個全零的64位報文,用輸出結果I = 0替換key _ box [0]和key _ box[1];
4)將key _ box,key _ box [I+1]替換為BF_En加密,將key _ box [I+2]和key _ box [I+3]替換為output
5)i+2,繼續步驟4,直到所有key _ boxes被替換;
6)用key _ box [16]和key _ box [17]作為第壹個輸入(相當於上面全零的輸入),用類似的方法代替key_sbox信息加密。
信息加密就是把要加密的信息X按函數分成32位的兩部分:XL和XRBF _ EN對輸入的信息進行變換。
3.RC5算法
RC5是壹個比較新的算法,Rivest設計了RC5的特殊實現,所以RC5算法有壹個面向字的結構:RC5-w/r/b,其中W是字長,取值可以是16,32或者64。不同字長的明文和密文分組長度為2w位,R為加密輪數,B為密鑰字節長度。
擴展數據:
壹般來說,三個獨立密鑰的3DES(密鑰選項1)的密鑰長度為168位(三個56位DES密鑰),但由於中途遭遇攻擊,其有效安全性僅為112位。密鑰選項2將密鑰長度縮短為112位,但該選項對特定的選擇明文攻擊和已知明文攻擊較弱,因此NIST確定其只有80位安全性。
對key option 1最著名的攻擊,大約需要2組已知明文,2塊,兩次DES加密,2比特內存(其他時間和內存的分配方案本文也有提及)。
這在現在是不現實的,所以NIST認為關鍵選項1可以使用到2030年。如果攻擊者試圖在壹些可能的(但不是全部)密鑰中找到正確的密鑰,有壹種內存效率高的攻擊方法,可以用幾個與每個密鑰對應的選定明文和大約兩次加密操作找到兩個目標密鑰中的壹個。
百度百科-3DES
百度百科-河豚
百度百科-RC5