DES加密算法及其在Java中的實(shí)現(xiàn)_第1頁
DES加密算法及其在Java中的實(shí)現(xiàn)_第2頁
DES加密算法及其在Java中的實(shí)現(xiàn)_第3頁
DES加密算法及其在Java中的實(shí)現(xiàn)_第4頁
DES加密算法及其在Java中的實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 作者簡介:李玉榮(1973-,女,河南臺(tái)前人,碩士,濮陽職業(yè)技術(shù)學(xué)院數(shù)學(xué)與信息工程系講師,研究方向?yàn)橛?jì)算機(jī)應(yīng)用。DES 加密算法及其在J ava 中的實(shí)現(xiàn)李玉榮(濮陽職業(yè)技術(shù)學(xué)院數(shù)學(xué)與信息工程系,河南濮陽457000摘要:DES 算法已被應(yīng)用于許多需要安全加密的場合(如信用卡持卡人的PIN 加密傳輸、IC 卡與POS 間的雙向認(rèn)證、金融數(shù)據(jù)包校驗(yàn)等,深入地分析了DES 算法的思想、加密過程及應(yīng)用,并指出了DES 算法的優(yōu)勢和不足。關(guān)鍵詞:DES 算法;算法思想;S 盒;JAVA ;密鑰中圖分類號(hào):TP301.6文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1672-7800(200904-0055-031DES

2、算法思想DES (Data Encryption Standard 算法是1977年得到美國政府正式許可的一種用56位密鑰來加密64位數(shù)據(jù)的加密方法。DES 是一種特殊類型的迭代密碼。簡單說來,DES 是采用傳統(tǒng)的替換和移位的方法加密的分組密碼,其算法是對(duì)稱的,這樣既可以用于加密也可以用于解密。DES 用56位密鑰對(duì)64位的明文數(shù)據(jù)塊進(jìn)行加密,每次加密可以對(duì)64位的明文數(shù)據(jù)進(jìn)行16輪編碼,經(jīng)過一系列替換和移位后,輸出完全不同的64位密紋數(shù)據(jù)。DES 入口參數(shù)有3個(gè):Key 、Data 、Mode ,其中Key 為7個(gè)字節(jié)共56位(另有8位作為奇偶校驗(yàn)位,這樣保證了明文與密鑰長度的一致性,是DE

3、S 算法的工作密鑰;Data 為8位字節(jié)64位,是要被加密或解密的數(shù)據(jù);Mode 為DES 的工作方式,由兩種:加密、解密。由于DES 算法使用64位的標(biāo)準(zhǔn)算法和邏輯運(yùn)算、運(yùn)算速度快、密鑰產(chǎn)生容易,因此適合當(dāng)前大多數(shù)計(jì)算機(jī)上用軟件方法實(shí)現(xiàn),同時(shí)也適用于專用芯片上。2DES 算法加密過程DES 算法的加密過程大致可以分為4步:初始置換(IP 處理、迭代過程、子密鑰產(chǎn)生、逆置換(IP -1處理,功能是將輸入的64位數(shù)據(jù)塊經(jīng)過初始置換按位重新組合,并把輸入分為左右兩部分(L 、R ,各部分各有32位,將L 1=R 0,R 1=L 0f (R 0,K 1。DES 加密過程如圖1所示。具體加密過程為:6

4、4位密鑰經(jīng)子密鑰產(chǎn)生出16個(gè)子密鑰,為K 1、K 2K 15、K 16,分別供第一次、第二次第十六次加密迭代使用;64位明文首先經(jīng)過初始置換IP (Initial Permutation ,將數(shù)據(jù)打亂重新排列并分為左右兩半,左邊32位構(gòu)成L 0,右邊32位構(gòu)成R 0;由加密函數(shù)f 實(shí)現(xiàn)子密鑰K 1對(duì)R 0的加密,結(jié)果得到32位的數(shù)據(jù)組(R 0,K 1,f (R 0,K 1再與L 0模2相加,又得到一個(gè)32位的數(shù)據(jù)組L 0f (R 0,K 1,以L 0f (R 0,K 1作為第二次加密迭代的R 1,以R 0作為第二次加密迭代的L 1,至此第一次加密迭代結(jié)束;第二次加密迭代至第十六次加密迭代分別用

5、子密鑰K 1、K 16進(jìn)行,其過程類同;第十六次加密迭代結(jié)束后產(chǎn)生一個(gè)64位的數(shù)據(jù)組,以其左邊32位作為R 16,右邊為L 16,兩者合并再經(jīng)過逆初始置換IP -1,將數(shù)據(jù)重新排列便得到64位的密文。3DES 加密算法的詳細(xì)分析3.1子密鑰的產(chǎn)生子密鑰的產(chǎn)生如圖2所示。64位密鑰經(jīng)過置換選擇1(見表2、循環(huán)左移、置換選擇2(見表3等變換,產(chǎn)生出16個(gè)子密鑰。其中置換選擇1中并不出現(xiàn)8,16,24,32,40,48,56,64,所以只有56位有效,其余8位為奇偶校驗(yàn)位。C0、D0是經(jīng)過置換選擇1后的56位的前后28位,C 0=K 57K 49K 44K 36,D 0=K 63K 55K 12K

6、4。經(jīng)過循環(huán)左移(移動(dòng)位數(shù)表見表1,將每次迭代得到的C i 、D i 經(jīng)過置換選擇2變換得到子密鑰K i (i =1,2,316。置換選擇2是從56位中選出48位輸出。表1循環(huán)左移位數(shù)表22221表2置換選擇1574941332517915850423426186355473931231576254463830221466153453729211352820124第8卷%第4期2009年4月V ol .8N o.4A pr .2009軟件導(dǎo)刊2009年 表3置換選擇24449395634534642503629323.2加密函數(shù)加密函數(shù)是DES算法的核心,f函數(shù)在第i次加密迭代中用子密鑰Ki對(duì)

7、R i-1進(jìn)行加密,并在加密過程中使用了唯一的非線S盒。如圖3所示,在第i次迭代加密中選擇運(yùn)算E對(duì)性組件32位的R i-1進(jìn)行選擇和排列后擴(kuò)展為48位,比原來多出的16位為錯(cuò)位,數(shù)據(jù)位仍按原輸入位,即輸入與輸出滿足線性關(guān)系。由E輸出的48位按順序分為8組,每組6位,分別通過8個(gè)S子盒后成4位,共32位。 第4期Byte encryptedClassData =cipher.doFinal (data ;/保存加密后的文件,覆蓋原有的類文件。Util.writeFile (filename ,encryptedClassData ;(3解密數(shù)據(jù)。運(yùn)行經(jīng)過加密的程序時(shí),ClassLoader 分析

8、并解密類文件。操作步驟如下所示。/生成一個(gè)可信任的隨機(jī)數(shù)源SecureRandom sr=new SecureRandom (;/從密鑰文件中獲取原始密鑰數(shù)據(jù)Byte rawKeyData =Util.readFile (keyFilename ;/創(chuàng)建一個(gè)DESKeySpec 對(duì)象DESKeySpec dks=new DESKeySpec (rawKeyData ;/創(chuàng)建一個(gè)密鑰工廠,然后用它把DESKeySpec 對(duì)象轉(zhuǎn)換成ecret Key 對(duì)象SecretKeyFactory key Factory =SecretKeyFactory.getInstance("DES&quo

9、t;SecretKey key=keyFactory.generateSecret (dks ;/Cipher 對(duì)象實(shí)際完成解密操作Cipher cipher=Cipher.getInstance ("DES"/用密鑰初始化Cipher 對(duì)象Cipher.init (Cipher.DECRYPT_MODE ,key ,sr ;/獲得經(jīng)過加密的數(shù)據(jù)Byte encrypted Data =Util.readFile (Filename ;/執(zhí)行解密操作Byte decryptedData =cipher.doFinal (encryptedData ;/然后將解密后的數(shù)據(jù)轉(zhuǎn)化

10、成原來的類文件。將上述代碼與自定義的類裝載器結(jié)合就可以做到邊解密邊運(yùn)行,從而起到保護(hù)源代碼的作用。5結(jié)束語DES 加密算法綜合運(yùn)用了置換、代替、代數(shù)等多種密碼技術(shù),是一種經(jīng)過乘積后得到的密碼。其算法結(jié)構(gòu)采用了置換、代替等基本加密運(yùn)算構(gòu)成了輪加密函數(shù),并對(duì)其進(jìn)行了16次迭代。同時(shí),S 盒同P 置換相互配合,形成了很強(qiáng)的抗差分攻擊和抗線性攻擊。在20多年的商業(yè)密碼應(yīng)用實(shí)踐中,充分地證明了DES 算法是安全的,也沒有發(fā)現(xiàn)DES 算法存在嚴(yán)重地安全隱患,得到了世界范圍的公認(rèn)。但是DES 加密算法不可避免的也存在一些弱點(diǎn)和不足,例如:密鑰較短,DES 算法采用56密鑰,顯然是短了點(diǎn);弱密鑰,在DES 算

11、法中對(duì)加密函數(shù)進(jìn)行16輪迭代中分別使用了不同的子密鑰來確保DES 算法的強(qiáng)度,但實(shí)際上存在一些密鑰,由它們產(chǎn)生的16個(gè)子密鑰是相互重復(fù)的;互補(bǔ)對(duì)稱性,由于DES 算法加密、解密過程是相同的,即對(duì)密文再加密得到明文,使得破解DES 的工作量減少了一半。參考文獻(xiàn):1劉曉星,胡暢霞,劉明生.安全加密算法DES 的分析與改進(jìn)J .微計(jì)算機(jī)與信息,2006(4.2劉萌銘,李金海,劉國麗,等.計(jì)算機(jī)安全技術(shù)M .北京:清華大學(xué)出版社,2000.3盧開澄.計(jì)算機(jī)密碼學(xué)計(jì)算機(jī)網(wǎng)絡(luò)中的數(shù)據(jù)保密與安全(第3版M .北京:清華大學(xué)出版社,2003.4William STALLINS.密碼編碼學(xué)與網(wǎng)絡(luò)安全:原理與實(shí)踐

12、(第2版M .楊明,胥光輝,齊望東,譯.北京:電子工業(yè)出版社,2001.(責(zé)任編輯:卓光Implementation of DES Algorithm in JavaAbstract:DES algorithm has been applied to a number of occasions,which need for security encryption(such as credit card PINencryption transmission,IC card and a two-way authentication between the POS,financial data packets,such as checking,the paper's in -depth analysis of the DES algorithm Thinking,encryption and

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論