DES、3DES

文章1:

        這一篇文章要解決數據加密——數據補位的問題、DES算法的兩種模式ECB和CBC問題以及更加安全的算法——3DES算法。

        一、數據補位 DES數據加解密就是將數據按照8個字節一段進行DES加密或解密得到一段8個字節的密文或者明文,最後一段不足8個字節,按照需求補足8個字節(通常補00或者FF,根據實際要求不同)進行計算,之後按照順序將計算所得的數據連在一起即可。 這裏有個問題就是爲什麼要進行數據補位?主要原因是DES算法加解密時要求數據必須爲8個字節。 

        二、ECB模式 DES ECB(電子密本方式)其實非常簡單,就是將數據按照8個字節一段進行DES加密或解密得到一段8個字節的密文或者明文,最後一段不足8個字節,按照需求補足8個字節進行計算,之後按照順序將計算所得的數據連在一起即可,各段數據之間互不影響。

        三、CBC模式 DES CBC(密文分組鏈接方式)有點麻煩,它的實現機制使加密的各段數據之間有了聯繫。其實現的機理如下: 加密步驟如下: 1)首先將數據按照8個字節一組進行分組得到D1D2......Dn(若數據不是8的整數倍,用指定的PADDING數據補位) 2)第一組數據D1與初始化向量I異或後的結果進行DES加密得到第一組密文C1(初始化向量I爲全零) 3)第二組數據D2與第一組的加密結果C1異或以後的結果進行DES加密,得到第二組密文C2 4)之後的數據以此類推,得到Cn 5)按順序連爲C1C2C3......Cn即爲加密結果。 解密是加密的逆過程,步驟如下: 1)首先將數據按照8個字節一組進行分組得到C1C2C3......Cn 2)將第一組數據進行解密後與初始化向量I進行異或得到第一組明文D1(注意:一定是先解密再異或) 3)將第二組數據C2進行解密後與第一組密文數據進行異或得到第二組數據D2 4)之後依此類推,得到Dn 5)按順序連爲D1D2D3......Dn即爲解密結果。 這裏注意一點,解密的結果並不一定是我們原來的加密數據,可能還含有你補得位,一定要把補位去掉纔是你的原來的數據。 

        四、3DES 算法 3DES算法顧名思義就是3次DES算法,其算法原理如下: 設Ek()和Dk()代表DES算法的加密和解密過程,K代表DES算法使用的密鑰,P代表明文,C代表密表,這樣, 3DES加密過程爲:C=Ek3(Dk2(Ek1(P))) 3DES解密過程爲:P=Dk1((EK2(Dk3(C))) 這裏可以K1=K3,但不能K1=K2=K3(如果相等的話就成了DES算法了) 3DES with 2 diffrent keys(K1=K3),可以是3DES-CBC,也可以是3DES-ECB,3DES-CBC整個算法的流程和DES-CBC一樣,但是在原來的加密或者解密處增加了異或運算的步驟,使用的密鑰是16字節長度的密鑰,將密鑰分成左8字節和右8字節的兩部分,即k1=左8字節,k2=右8字節,然後進行加密運算和解密運算。 3DES with 3 different keys,和3DES-CBC的流程完全一樣,只是使用的密鑰是24字節的,但在每個加密解密加密時候用的密鑰不一樣,將密鑰分爲3段8字節的密鑰分別爲密鑰1、密鑰2、密鑰3,在3DES加密時對加密解密加密依次使用密鑰1、密鑰2、密鑰3,在3DES解密時對解密加密解密依次使用密鑰3、密鑰2、密鑰1。


文章2:

DES

  1977年1月,美國政府頒佈:採納IBM公司設計的方案作爲非機密數據的正式數據加密標準(DES Data Encryption Standard)

  目前在國內,隨着三金工程尤其是金卡工程的啓動,DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收費站等領域被廣泛應用,以此來實現關鍵數據的保密,如信用卡持卡人的PIN的加密傳輸,IC卡與POS間的雙向認證、金融交易數據包的MAC校驗等,均用到DES算法。

 

  DES算法的入口參數有三個:Key、Data、Mode。

  其中Key爲8個字節共64位,是DES算法的工作密鑰

  Data也爲8個字節64位,是要被加密或被解密的數據

  Mode爲DES的工作方式,有兩種:加密解密

 

  DES算法是這樣工作的:

  如Mode爲加密,則用Key 去把數據Data進行加密, 生成Data的密碼形式(64位)作爲DES的輸出結果;

  如Mode爲解密,則用Key去把密碼形式的數據Data解密,還原爲Data的明碼形式(64位)作爲DES的輸出結果。

  在通信網絡的兩端,雙方約定一致的Key,在通信的源點用Key對核心數據進行DES加密,然後以密碼形式在公共通信網(如電話網)中傳輸到通信網絡的終點,數據到達目的地後,用同樣的Key對密碼數據進行解密,便再現了明碼形式的核心數據。這樣,便保證了核心數據(如PIN、MAC等)在公共通信網中傳輸的安全性和可靠性。

  通過定期在通信網絡的源端和目的端同時改用新的Key,便能更進一步提高數據的保密性,這正是現在金融交易網絡的流行做法。

 

 

3DES

  3DES是DES加密算法的一種模式,它使用3條64位的密鑰對數據進行三次加密數據加密標準(DES)是美國的一種由來已久的加密標準,它使用對稱密鑰加密法。

  3DES(即Triple DESDESAES過渡的加密算法(1999年,NIST將3-DES指定爲過渡的加密標準),是DES的一個更安全的變形。它以DES爲基本模塊,通過組合分組方法設計出分組加密算法。

 

  設Ek()和Dk()代表DES算法的加密和解密過程,K代表DES算法使用的密鑰,P代表明文,C代表密表,這樣,

  3DES加密過程爲:C=Ek3(Dk2(Ek1(P)))

  3DES解密過程爲:P=Dk1((EK2(Dk3(C)))

  K1、K2、K3決定了算法的安全性,三個密鑰互不相同,本質上就相當於用一個長爲168位的密鑰進行加密。多年來,它在對付強力攻擊時是比較安全的。若數據對安全性要求不那麼高,K1可以等於K3。在這種情況下,密鑰的有效長度爲112位

 

 

AES

  AES(Advanced Encryption Standard):高級加密標準,是下一代的加密算法標準,速度快,安全級別高。

  用AES加密2000年10月,NIST(美國國家標準和技術協會)宣佈通過從15種候選算法中選出的一項新的密匙加密標準。Rijndael被選中成爲將來的 AES。Rijndael是在1999年下半年,由研究員Joan Daemen 和 Vincent Rijmen 創建的。AES正日益成爲加密各種形式的電子數據的實際標準。

  美國標準與技術研究院(NIST)於2002年5月26日製定了新的高級加密標準(AES)規範。

 

  AES算法基於排列和置換運算。排列是對數據重新進行安排,置換是將一個數據單元替換爲另一個。

  AES使用幾種不同的方法來執行排列和置換運算。AES是一個迭代的對稱密鑰分組的密碼,它可以使用128192256位密鑰,並且用128位(16字節)分組加密和解密數據。

  與公共密鑰加密使用密鑰對不同,對稱密鑰密碼使用相同的密鑰加密和解密數據。通過分組密碼返回的加密數據的位數與輸入數據相同。迭代加密使用一個循環結構,在該循環中重複置換和替換輸入數據。

推薦文章:

http://blog.csdn.net/zixu/article/details/1204298


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章