密碼學(xué)實驗報告三_第1頁
密碼學(xué)實驗報告三_第2頁
密碼學(xué)實驗報告三_第3頁
密碼學(xué)實驗報告三_第4頁
密碼學(xué)實驗報告三_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE報告創(chuàng)建時間:《現(xiàn)代密碼學(xué)》實驗報告年級、專業(yè)、班級2012級計算機科學(xué)與技術(shù)1班姓名陳康裕實驗題目對稱密碼算法DES實驗時間2014.11.20實驗地點主教0410實驗成績實驗性質(zhì)■驗證性□設(shè)計性□綜合性教師評價:□算法/實驗過程正確;□源程序/實驗內(nèi)容提交□程序結(jié)構(gòu)/實驗步驟合理;□實驗結(jié)果正確;□語法、語義正確;□報告規(guī)范;其他:評價教師簽名:實驗原理和目的DES算法屬于分組加密算法,即在明文加密和密文解密過程中,信息都是按照固定長度分組后進行處理的?;煜蛿U散是它采用的兩個最重要的安全特性?;煜侵竿ㄟ^密碼算法使明文和密文以及密鑰的關(guān)系非常復(fù)雜,無法從數(shù)學(xué)上描述或者統(tǒng)計。擴散是指明文和密鑰中的每一位信息的變動,都會影響到密文中許多位信息的變動,從而隱藏統(tǒng)計上的特性,增加密碼的安全。DES算法將明文分成64位大小的眾多數(shù)據(jù)塊,即分組長度為64位。同時用56位密鑰對64位明文信息加密,最終形成64位的密文。需要注意的地方是掌握DES算法的16輪加、解密流程以及子密鑰的產(chǎn)生流程。通過用DES算法對實際的數(shù)據(jù)進行加密和解密來深刻了解DES的運行原理。二、實驗項目內(nèi)容1、算法分析(1)寫出DES算法的16輪加、解密流程;(2)寫出子密鑰的產(chǎn)生流程;2、下載DES算法的實現(xiàn)程序,并調(diào)用其程序?qū)σ粋€文件進行加密和解密,提交程序代碼和執(zhí)行結(jié)果。3、調(diào)用下載的DES算法的實現(xiàn)程序?qū)斎氲氖M制數(shù)加密,比較輸入和輸出,當(dāng)改變一個位時比較輸出的變化,并說明原因。三、實驗過程或算法(源程序)1、(1)DES算法的16輪加、解密流程:加密流程解密流程(2)子密鑰的產(chǎn)生流程:子密鑰產(chǎn)生流程2、利用下列程序?qū)崿F(xiàn)一個文件的加密和解密:(程序的主要代碼,整個程序見附件)//密鑰置換1pc-1intDES_PC1_Transform(ElemTypekey[64],ElemTypetempbts[56]){intcnt;for(cnt=0;cnt<56;cnt++){tempbts[cnt]=key[PC_1[cnt]];}return0;}//密鑰置換2pc-2intDES_PC2_Transform(ElemTypekey[56],ElemTypetempbts[48]){intcnt;for(cnt=0;cnt<48;cnt++){tempbts[cnt]=key[PC_2[cnt]];}return0;}//E擴展置換intDES_E_Transform(ElemTypedata[48]){//這里data兩種用處,故為48位極人臣intcnt;ElemTypetemp[48];for(cnt=0;cnt<48;cnt++){temp[cnt]=data[E_Table[cnt]];//這里data下標(biāo)最高為32.}memcpy(data,temp,48);return0;}//P置換intDES_P_Transform(ElemTypedata[32]){intcnt;ElemTypetemp[32];for(cnt=0;cnt<32;cnt++){temp[cnt]=data[P_Table[cnt]];}memcpy(data,temp,32);return0;}//循環(huán)左移//左右兩邊同時循環(huán)左移相同的位數(shù).//10010循環(huán)左移1位為00101,左移2位為01010intDES_ROL(ElemTypedata[56],inttimes){ElemTypetemp[56];//temp只保存將要循環(huán)到右邊的位.//保存將要循環(huán)移動到右邊的位memcpy(temp,data,times);//保存前28位的移位memcpy(temp+times,data+28,times);//保存后28位的移位極人臣//前28位移動memcpy(data,data+times,28-times);//一般移位memcpy(data+28-times,temp,times);//循環(huán)位移動//后28位移動memcpy(data+28,data+28+times,28-times);memcpy(data+56-times,temp+times,times);return0;}//生成子密鑰intDES_MakeSubKeys(ElemTypekey[64],ElemTypesubKeys[16][48]){ElemTypetemp[56];intcnt;DES_PC1_Transform(key,temp);//PC1置換for(cnt=0;cnt<16;cnt++){//16輪跌代,產(chǎn)生16個子密鑰DES_ROL(temp,MOVE_TIMES[cnt]);//CiDi左右兩邊,循環(huán)左移DES_PC2_Transform(temp,subKeys[cnt]);//PC2置換,產(chǎn)生子密鑰}return0;}//異或intDES_XOR(ElemTypeR[48],ElemTypeL[48],intcount){intcnt;for(cnt=0;cnt<count;cnt++){R[cnt]^=L[cnt];//異或即為模2加法}return0;}//S盒置換48=8*632=8*4intDES_SBOX(ElemTypedata[48]){intcnt;intline,row,output;intcur1,cur2;for(cnt=0;cnt<8;cnt++){cur1=cnt*6;cur2=cnt<<2;//計算在S盒中的行與列b1b2b3b4b5b6b1b2//b3b4b5b6line=(data[cur1]<<1)+data[cur1+5];row=(data[cur1+1]<<3)+(data[cur1+2]<<2)+(data[cur1+3]<<1)+data[cur1+4];output=S[cnt][line][row];//化為2進制data[cur2]=(output&0X08)>>3;//取得output二進制倒數(shù)第4位為0還是1data[cur2+1]=(output&0X04)>>2;//output=7=0111oxo4=0100data[cur2+2]=(output&0X02)>>1;//相&得到0100右移2位得到1data[cur2+3]=output&0x01;}return0;}3、調(diào)用下載的DES算法的實現(xiàn)程序?qū)斎氲氖M制數(shù)加密。四、實驗結(jié)果及分析和(或)源程序調(diào)試過程1、對一個文件的加密和解密:明文在d:\\plaint.txt中:通過初始密鑰d:\\key.txt(密鑰是字符型的,1個字符對應(yīng)8比特)密文在d:\\cipher.txt中:解密得到明文為d:\\result.txt中2、輸入一個十六進制的數(shù)對其加密和解密:輸入為明文是:加密的密文是:改變明文中的2F變成1F時,密文為:從實驗結(jié)果可以看出,明文就算是相差一個位,但是他們的密文完全沒有規(guī)律可循,這就保證了數(shù)據(jù)加密的可靠性,至于這樣的原因,DES是

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論