3DES算法加解密介紹

3DES:java

3DES加密就是DES的增強版,三重加密。將192位密鑰分紅三段,每段64位,除去8位奇偶校驗,剩下56位用來加密。
web

數據補位:安全

加密時,將數據按照8個字節一段進行加密,這就出現最後一段不足8個字節的問題,因此會補足8位。工具

補位有多種方式:加密

java中經常使用的 PKCS5Padding.net 經常使用PKCS7是將將須要填充的長度做爲值spa

例子 數據長度爲9,因此須要拆成兩個8,缺乏7位.net

數據     AA AA AA AA AA AA AA AA    AA orm

填充後 : AA AA AA AA AA AA AA AA    AA  07 07 07 07 07 07 07 07ci

通常.net PKCS7=java PKCS5Paddingit

還有補0的,zero padding和不少。

加密模式:

ECB:java默認的加密模式,就是將數據按照8個字節一段進行DES加密或解密獲得一段8個字節的密文或者明文,最後一段不足8個字節,按照需求補足8個字節進行計算,以後按照順序將計算所得的數據連在一塊兒便可,各段數據之間互不影響。

CBC:.net默認的加密模式,新增一個初始化向量iv,使得加密結果更加安全。

加密步驟以下:

1)首先將數據按照8個字節一組進行分組獲得D1D2......Dn(若數據不是8的整數倍,用指定的PADDING數據補位)

2)第一組數據D1與初始化向量I異或後的結果進行DES加密獲得第一組密文C1(初始化向量I爲全零)

3)第二組數據D2與第一組的加密結果C1異或之後的結果進行DES加密,獲得第二組密文C2

4)以後的數據以此類推,獲得Cn

5)按順序連爲C1C2C3......Cn即爲加密結果。

異或(同爲0 異爲1  1100+1011=0111)


還有CFB和OFB


互聯網程序中加密模式的使用:

     ECB是不推薦的方式,Key相同時,相同的明文在不一樣的時候產生相同的明文,容易遭到字典攻擊;

     CBC因爲加入了向量參數,必定程度上抵禦了字典工具,但缺點也隨之而來,一旦中間一個數據出錯或丟失,後面的數據將受到影響;

     CFB與CBC相似,好處是明文和密文不用是8bit的整數倍,中間一個數據出錯,隻影響後面的幾個塊的數據;

     OFB比CFB方式,一旦一個數據出錯,不會影響後面的數據,但安全性下降;

     所以,推薦使用CFB方式,但每一個數據包單獨加密,不然一個數據包丟失,須要作不少容錯處理;

     固然,具體問題也要具體分析,對於只須要」特定安全性」①,不須要」計算安全性」以上的軟件,也可使用ECB模式;

相關文章
相關標籤/搜索