商晴慶+趙建博+申文博_第1頁
商晴慶+趙建博+申文博_第2頁
商晴慶+趙建博+申文博_第3頁
商晴慶+趙建博+申文博_第4頁
商晴慶+趙建博+申文博_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

DES加解密算法商晴慶2013210684趙建博2013210695申文博20132106761算法思想2算法原理3主要代碼目錄1算法思想2算法原理3主要代碼101Application02Application03Application04Application混淆和擴(kuò)散原則

盡可能使密文和加密密鑰之間的統(tǒng)計(jì)關(guān)系更加復(fù)雜,以阻止攻擊者擁有一些密文的統(tǒng)計(jì)特性。迭代結(jié)構(gòu)

使其結(jié)構(gòu)清晰,調(diào)理清楚,算法為對(duì)合運(yùn)算,便于實(shí)現(xiàn),運(yùn)行速度快?;贔eistel結(jié)構(gòu)

優(yōu)點(diǎn):由于它是對(duì)稱的密碼結(jié)構(gòu),所以對(duì)信息的加密和解密的過程就極為相似,甚至完全一樣。乘積密碼乘積密碼是指依次使用兩個(gè)或者兩個(gè)以上的基本密碼,所得結(jié)果的密碼強(qiáng)度將強(qiáng)于單個(gè)密碼的強(qiáng)度。

1算法思想1算法思想2算法原理3主要代碼22.12.22.3密鑰生成算法原理BUSINSSINFOGRAPHICS加密操作解密操作22.1子密鑰生成原理圖取得密鑰等分密鑰密鑰移位密鑰選取迭代16次2.1子密鑰生成步驟64位密鑰,去除64位密碼中作為奇偶校驗(yàn)位,剩下56位。56位輸入密鑰分成均等的A,B兩部分,每部分為28位。按表,在第i次迭代時(shí)密鑰循環(huán)左移相應(yīng)的的位數(shù)。進(jìn)行16次迭代,得到16個(gè)子密鑰。左右兩部分通過置亂合并得到56位,再壓縮成48位,與明文異或操作。2.2加密操作原理圖取得數(shù)據(jù)初始換位數(shù)據(jù)擴(kuò)展數(shù)據(jù)壓縮數(shù)據(jù)換位2.2加密操作步驟按照置位表進(jìn)行換位通過S盒,將右48位明文從6*8變換成4*8=32位64位均分成左右部分各32位,并將右32位擴(kuò)展成48位進(jìn)行IP置換,得到新的64位明文取得64位的明文數(shù)據(jù)塊2.2交換數(shù)據(jù)迭代16次數(shù)據(jù)整理按照表進(jìn)行IP逆置換,得到密文進(jìn)行16次相同的操作將變換好的左右32位進(jìn)行交換2.2加密操作S盒原理圖DES解密2.3解密操作解密可以表示為:與加密進(jìn)行完全相反的操作順序即可,這也充分體現(xiàn)了對(duì)稱密碼結(jié)構(gòu)的方便性。1算法思想3主要代碼32算法原理A重要接口函數(shù)說明3這個(gè)函數(shù)中將輸入值,按照Table表的順序轉(zhuǎn)換,最后賦值到輸出函數(shù)中,是算法中比較重要的一個(gè)函數(shù),因?yàn)閐es算法中多次需要表順序打亂。voidTransform(bool*Out,bool*In,constchar*Table,intNumber){for(inti=0;i<Number;++i)CC[i]=In[Table[i]-1];memcpy(Out,CC,Number);}置亂函數(shù)B重要接口函數(shù)說明3voidDES_Main(charOut[8],charIn[8],constPS_KeyPS_Key,boolType){staticboolM[64],CC[32],*Li=&M[0],*Ri=&M[32];//M用于存儲(chǔ)64位二進(jìn)制,輸入的是8位英文。ChangeToBit(M,In,64); //轉(zhuǎn)換Transform(M,M,IP_Table,64);//按表進(jìn)行換位。if(Type==ENCRYPT){//判斷是否加密for(inti=0;i<16;++i){memcpy(CC,Ri,32);//Ri轉(zhuǎn)換到CC中F_funchange(Ri,(*PS_Key)[i]);//PS_Key存儲(chǔ)子密鑰Xor(Ri,Li,32);//R和L異或memcpy(Li,CC,32);//將這次的R放入下次的L}}else{for(inti=15;i>=0;--i){memcpy(CC,Li,32);F_funchange(Li,(*PS_Key)[i]);Xor(Li,Ri,32);memcpy(Ri,CC,32);} }Transform(M,M,IPR_Table,64);ChangeToByte(Out,M,64);}加解密函數(shù)函數(shù)現(xiàn)將輸入的8位數(shù)值進(jìn)行轉(zhuǎn)換ChangeToBit(M,In,64),再開始初始置換,接著判斷是否加密,加密時(shí),按加密步驟,解密時(shí),執(zhí)行加密相反步驟。C重要接口函數(shù)說明3輸入了32位的R邊之后,通過E表的轉(zhuǎn)換,再與密鑰進(jìn)行異或操作,再通過S盒的置換最后P表轉(zhuǎn)換。這個(gè)函數(shù)通過DES_MAIN調(diào)用而使用,這個(gè)函數(shù)完成了DES大部分操作。voidF_funchange(boolIn[32],constboolKi_table[48]){staticboolMR[48];Transform(MR,In,E_Table,48);Xor(MR,Ki_table,48);S_Change(In,MR);Transform(In,In,P_Table,32);}主變換函數(shù)D重要接口函數(shù)說明3利用對(duì)字符串的賦值來實(shí)現(xiàn),先將In將被移走的數(shù)賦值到一個(gè)保持的數(shù)CC中,然后將In除去移走的位數(shù)移給In,然后將開始保存的數(shù)賦值給In的右邊幾位。voidRollRight(bool*In,intNumber,intloop){memcpy(CC,In,loop);memcpy(In,In+loop,Number-loop);memcpy(In+Number-loop,CC,loop);}循環(huán)左移函數(shù)E重要接口函數(shù)說明3ChangeToBit中,將Byte轉(zhuǎn)換成8位機(jī)器碼,同理ChangeToByte將8位機(jī)器碼轉(zhuǎn)換為1個(gè)字母。voidChangeToBit(bool*Out,constchar*In,intBs){for(inti=0;i<Bs;++i)Out[i]=(In[i>>3]>>(i&7))&1;}voidChangeToByte(char*Out,constbool*In,intBs){memset(Out,0,Bs>>3);for(inti=0;i<Bs;++i)Out[i>>3]|=In[i]<<(i&7);}比特轉(zhuǎn)換函數(shù)F重要接口函數(shù)說明3完成多次的DES算法加密,達(dá)到更高的加密效果,進(jìn)行判斷,若Is3DES為真,則開始多重加密。boolDES::Des_Start(char*Out,char*In,longdataNumber,constchar*Key,intkeyNumber,boolType){if(!(Out&&In&&Key&&(dataNumber=(dataNumber+7)&0xfffffff8))) returnfalse; GetAndSetKey(Key,keyNumber); if(!Is3DES){//1次DES for(longi=0,j=dataNumber>>3;i<j;++i,Out+=8,In+=8) DES_MAIN(Out,In,&MiniKey[0],Type); //一次DES加密::解密 }else{//3次DES加密:加(key0)-解(key1)-加(key0)解密::解(key0)-加(key1)-解(key0) for(longi=0,j=dataNumber>>3;i<j;++i,Out+=8,

溫馨提示

  • 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)論