版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
DES加解密算法商晴慶2013210684趙建博2013210695申文博20132106761算法思想2算法原理3主要代碼目錄1算法思想2算法原理3主要代碼101Application02Application03Application04Application混淆和擴散原則
盡可能使密文和加密密鑰之間的統計關系更加復雜,以阻止攻擊者擁有一些密文的統計特性。迭代結構
使其結構清晰,調理清楚,算法為對合運算,便于實現,運行速度快。基于Feistel結構
優點:由于它是對稱的密碼結構,所以對信息的加密和解密的過程就極為相似,甚至完全一樣。乘積密碼乘積密碼是指依次使用兩個或者兩個以上的基本密碼,所得結果的密碼強度將強于單個密碼的強度。
1算法思想1算法思想2算法原理3主要代碼22.12.22.3密鑰生成算法原理BUSINSSINFOGRAPHICS加密操作解密操作22.1子密鑰生成原理圖取得密鑰等分密鑰密鑰移位密鑰選取迭代16次2.1子密鑰生成步驟64位密鑰,去除64位密碼中作為奇偶校驗位,剩下56位。56位輸入密鑰分成均等的A,B兩部分,每部分為28位。按表,在第i次迭代時密鑰循環左移相應的的位數。進行16次迭代,得到16個子密鑰。左右兩部分通過置亂合并得到56位,再壓縮成48位,與明文異或操作。2.2加密操作原理圖取得數據初始換位數據擴展數據壓縮數據換位2.2加密操作步驟按照置位表進行換位通過S盒,將右48位明文從6*8變換成4*8=32位64位均分成左右部分各32位,并將右32位擴展成48位進行IP置換,得到新的64位明文取得64位的明文數據塊2.2交換數據迭代16次數據整理按照表進行IP逆置換,得到密文進行16次相同的操作將變換好的左右32位進行交換2.2加密操作S盒原理圖DES解密2.3解密操作解密可以表示為:與加密進行完全相反的操作順序即可,這也充分體現了對稱密碼結構的方便性。1算法思想3主要代碼32算法原理A重要接口函數說明3這個函數中將輸入值,按照Table表的順序轉換,最后賦值到輸出函數中,是算法中比較重要的一個函數,因為des算法中多次需要表順序打亂。voidTransform(bool*Out,bool*In,constchar*Table,intNumber){for(inti=0;i<Number;++i)CC[i]=In[Table[i]-1];memcpy(Out,CC,Number);}置亂函數B重要接口函數說明3voidDES_Main(charOut[8],charIn[8],constPS_KeyPS_Key,boolType){staticboolM[64],CC[32],*Li=&M[0],*Ri=&M[32];//M用于存儲64位二進制,輸入的是8位英文。ChangeToBit(M,In,64); //轉換Transform(M,M,IP_Table,64);//按表進行換位。if(Type==ENCRYPT){//判斷是否加密for(inti=0;i<16;++i){memcpy(CC,Ri,32);//Ri轉換到CC中F_funchange(Ri,(*PS_Key)[i]);//PS_Key存儲子密鑰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);}加解密函數函數現將輸入的8位數值進行轉換ChangeToBit(M,In,64),再開始初始置換,接著判斷是否加密,加密時,按加密步驟,解密時,執行加密相反步驟。C重要接口函數說明3輸入了32位的R邊之后,通過E表的轉換,再與密鑰進行異或操作,再通過S盒的置換最后P表轉換。這個函數通過DES_MAIN調用而使用,這個函數完成了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);}主變換函數D重要接口函數說明3利用對字符串的賦值來實現,先將In將被移走的數賦值到一個保持的數CC中,然后將In除去移走的位數移給In,然后將開始保存的數賦值給In的右邊幾位。voidRollRight(bool*In,intNumber,intloop){memcpy(CC,In,loop);memcpy(In,In+loop,Number-loop);memcpy(In+Number-loop,CC,loop);}循環左移函數E重要接口函數說明3ChangeToBit中,將Byte轉換成8位機器碼,同理ChangeToByte將8位機器碼轉換為1個字母。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);}比特轉換函數F重要接口函數說明3完成多次的DES算法加密,達到更高的加密效果,進行判斷,若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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年度財務管理團隊工作總結
- 安全生產思想保障講解
- 南昌職場發展導航指南
- 居民消防安全檢查標準
- 臀部護理預防措施
- 材料員五年晉升計劃
- 石英晶體濾波器制造工道德評優考核試卷含答案
- AI與建筑行業融合
- 礦山電機車司機沖突解決能力考核試卷含答案
- 電化學反應工安全意識強化水平考核試卷含答案
- 設備保溫施工專項施工方案
- 云南省2026年事業單位考試真題及答案
- 聚丙烯(PP)原材料MSDS報告(PPH-T03牌號)
- 2026年高考全國二卷英語考試題目及答案
- 煙草制品陳列與銷售規范操作手冊
- 新一輪千億斤糧食產能提升行動方案全文
- 骨質疏松治療方案培訓
- 2026內蒙古通遼市人民醫院招聘備案制編制護理人員50人考試參考試題及答案解析
- 中草藥采購管理制度
- 2026年人群擁擠防踩踏培訓
- 加油站特殊作業安全管理制度
評論
0/150
提交評論