des与3des
對(duì)稱密碼-DES和3DES
? ? 最近在看信息安全的知識(shí),就總結(jié)了一下自己所學(xué)到知識(shí)。
????先說一下什么是對(duì)稱密碼算法,什么是對(duì)稱密碼算法呢?對(duì)稱密碼算法是指有了加密密鑰就可以推算出解密密鑰,有了解密密鑰就可以推算出加密密鑰的的算法。
????那DES是什么呢?DES全稱為Data Encryption Standard,即數(shù)據(jù)加密標(biāo)準(zhǔn),是一種使用密鑰加密的塊算法,1977年被美國聯(lián)邦政府的國家標(biāo)準(zhǔn)局確定為聯(lián)邦資料處理標(biāo)準(zhǔn)(FIPS),并授權(quán)在非密級(jí)政府通信中使用,隨后該算法在國際上廣泛流傳開來。需要注意的是,在某些文獻(xiàn)中,作為算法的DES稱為數(shù)據(jù)加密算法(Data Encryption Algorithm,DSA),已與作為標(biāo)準(zhǔn)的DES區(qū)分開來。
?????DES設(shè)計(jì)中使用了分組密碼設(shè)計(jì)的兩個(gè)原則:混淆(confusion)和擴(kuò)散(diffusion),其目的是抗擊敵手對(duì)密碼系統(tǒng)的統(tǒng)計(jì)分析。混淆是使密文的統(tǒng)計(jì)特性與密鑰的取值之間的關(guān)系盡可能復(fù)雜化,以使密鑰和明文以及密文之間的依賴性對(duì)密碼分析者來說是無法利用的。擴(kuò)散的作用就是將每一位明文的影響盡可能迅速地作用到較多的輸出密文位中,以便在大量的密文中消除明文的統(tǒng)計(jì)結(jié)構(gòu),并且使每一位密鑰的影響盡可能迅速地?cái)U(kuò)展到較多的密文位中,以防對(duì)密鑰進(jìn)行逐段破譯。
DES以64位分組長度對(duì)數(shù)據(jù)加密,其中包括了8位奇偶校驗(yàn)位,所以實(shí)際的密文長度為56位,其過程如下:
?
用M表示明文,用C表示密文,用K表示密鑰,加密函數(shù)為E,解密函數(shù)為D,則DES的加密變換為:;解密變換為:。
3DES是針對(duì)DES算法密鑰過短、存在安全性的問題而改進(jìn)的一個(gè)措施,被稱為“3DES”。其實(shí)只是通過簡單的執(zhí)行3次DES來達(dá)到增加密鑰長度和安全而已。其過程如下圖所示:
?
在上圖中3DES算法在對(duì)明文M進(jìn)行加密時(shí),采用了三次加密過程,其中第一次和第三次是采用DES的加密算法,第二次采用的則是解密算法,從而得到最終的密文C。這種加密過程為“加密-解密-加密”,所以又稱為EDE(Encrypt-Decrypt-Encrypt)方案。其具體加密與解密過程為
加密過程:明文M經(jīng)過第一次加密得到的密文,第二次采用的是解密算法,所以此時(shí)得到的密文為,第三次采用加密算法,其密文文為,由此得到最終密文,此時(shí)將依次將替換得到最終3DES加密算法;
與此解密過程為最終密文C要先進(jìn)行解密,其解密算法為得到第一個(gè)明文,接著在進(jìn)行第二次解密,只不過此時(shí)要用的是原先解密的相對(duì)面其加密算法得到,最后解密第二次的明文得到最終明文,此時(shí)依次替換則可得到最終明文。
具體的對(duì)于DES加密在C#與Java中的應(yīng)用可以參考下方鏈接的博主哦:http://www.cnblogs.com/haoxinyue/archive/2012/04/26/2470661.html
總結(jié)
- 上一篇: 手机中的AR是怎么实现的
- 下一篇: Xcode执行Analyze静态分析