實驗報告 DES加密算法的實現(xiàn)_第1頁
實驗報告 DES加密算法的實現(xiàn)_第2頁
實驗報告 DES加密算法的實現(xiàn)_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、實驗報告DES加密算法的實現(xiàn)班級自動化 學(xué)號: 姓名:2016年11月13日星期日一、DES加密簡述:DES算法是一種對稱密碼體制,由美國IBM公司在1972年研發(fā)。其明文按64位進行 分組,密鑰長64位(包含8位校驗位),分組后的明文組和56位的密鑰按位替代或交 換的方法形成密文組的加密方法。二、DES的實現(xiàn)過程首先通過初始置換表IP對明文進行置換int IP_Table64 = 57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,56,48,40,32,24,1

2、6,8。58,50,42,34,26,18,10260,52,44,36,28,20,12462,54,46,38,30,22,14,6;第一個57就是將明文中的第57個元素,放到第1的位置,然后把明文中第49個元素 放到第2的位置,以此類推。之后將換位后的輸出分為兩局部L0和RO, L0是輸出的 左32位,R0是右32位。int DES_IP_Transform(char data64)int ent;char temp64;for(cnt = 0; ent 64; cnt+)tempcnt = dataIP_Tablecnt; memcpy(data,temp,64);return 0;)

3、之后加密函數(shù),將RO通過位選擇函數(shù)E置換,把本身是32位的R0擴充成48位,與 生成的48位子密鑰對應(yīng),按位運算。int E_Table48 = 31, 0, 1, 2, 3, 4,3, 4, 5, 6,7, 8,7, 8,9,10,11,12,11,12,13,14,15,16,15,16,17,18,19,20,19,20,21,22,23,24,23,24,25,26,27,28, 27,28,29,30,31, 0;int DES_E_Transform(char data48) int ent;char temp48;for(cnt = 0; ent 48; cnt+)tempcnt

4、 = dataE_Tablecnt; )memcpy(data,temp,48);return 0;然后,將擴充完的RO和子密鑰KI進行模2加運算,得到48位的一個串,把這個串 從左到右分為8組,每組6個字符。這里設(shè)8組分別為Bl, B2, B3, B4, B5, B6, B7, B8o其中Bj二bib2b3b4b5b6。之后,通過S盒來收縮,然后通過S盒輸出的就是 32位的一個串。int DES_SBOX(char data48)int ent;int line,row,output;int curl,cur2;for(cnt = 0; ent 8; cnt+)curl = cnt*6;cu

5、r2 = cnt2;line = (datacurll) + datacurl+5;row = (datacurl+l3) + (datacurl+22)+ (datacurl+3l) + datacurl+4;output = Scntlinerow;datacur2 = (output&0X08)3;datacur2+l = (output&0X04)2;datacur2+2 = (output&0X02)l;datacur2+3 = output&OxOl;)return 0;最后,經(jīng)過16次迭代運算后。得到L16、R16,for(cnt = 0; ent 16; cnt+)memcpy

6、(copyRightzplainBits+32,32);DES_E_Transform(copyRight);DES_XOR(copyRight,subKeyscnt,48);DES_SBOX(copyRight);DES_P_Transform(copyRight);DES_XOR(plainBits,copyRight,32);if(cnt != 15)DES_Swap(plainBits,plainBits+32);)將此作為輸入,進行逆置換,即得到密文輸出。逆置換正好是初始置換的逆運算。int IP_l_Table64 = 39,7,47,15,55,23,63,31,38,6,46,

7、14,54,22,62,30,37545,13,53,21,61,29,36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33-9,49,17,57,25,32,0,40,8,48,16,56,24;int DES_IP_l_Transform(char data64)int ent;char temp64;for(cnt = 0; ent 64; cnt+)tempcnt = dataIP_l_Tablecnt;)memcpy(data,temp,64);return 0;)子密鑰的生成過程首先,先去掉密

8、鑰中的奇偶校驗位,然后根據(jù)選擇置換PC-1講剩下的密鑰分成兩塊C0 和 D0;int DES_PCl_Transform(char key64, char tempbts56)int ent;for(cnt = 0; ent 56; cnt+)tempbtscnt = keyPC_lcnt;return 0;)第二步,將CO和DO進行循環(huán)左移變換,生成C1和D1,然后C1和D1合并,通過選 擇置換PC-2生成子密鑰K1;循環(huán)左移:int DES_ROL(char data56, int time) char temp56;memcpy(temp,data,time);memcpy(temp+t

9、ime,data+28,time);memcpy(data,data+time,28-time);memcpy(data+28-time,temp/time);memcpy(data+28/data+28+time,28-time);memcpy(data+56-time,temp+time,time);return 0;)選擇置換PC2:int DES_PC2_Transform(char key56, char tempbts48) int ent;for(cnt = 0; ent 48; cnt+)tempbtscnt = keyPC_2cnt; return 0;)第三步,Cl和DI再次經(jīng)過循環(huán)左移變換,生成C2和D2, C2和D2合并,通過選擇 置換PC-2生成子密鑰K2;第四步,以此類推,需要注意其中循環(huán)左移的位數(shù),一共是循環(huán)左移十六次,其中 LSI (第一次),LS2 (第二次),LS9, LS16是循環(huán)左移一位,其他的都是左移兩位。 int M0VE_TIMES16 = 1,17,2,2,2,2,2,1,2,2,2,2,2,2,1;以上為DES加密算法的實現(xiàn)思路。數(shù)據(jù)解密的算法與加密算法相同,區(qū)別在于第B

溫馨提示

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

評論

0/150

提交評論