下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)驗(yàn)一對(duì)稱密碼算法DES一、實(shí)驗(yàn)?zāi)康耐ㄟ^用DES算法對(duì)實(shí)際的數(shù)據(jù)進(jìn)行加密和解密來深刻了解DES的運(yùn)行原理。二、實(shí)驗(yàn)環(huán)境運(yùn)行Windows或Linux操作系統(tǒng)的PC機(jī),具有g(shù)cc(Linux)、VC(Windows)等C語言編譯環(huán)境。三、實(shí)驗(yàn)報(bào)告要求〔1〕使用附錄提供的程序?qū)σ粋€(gè)文件進(jìn)行加密和解密,提交程序代碼和執(zhí)行結(jié)果。〔2〕使用附錄提供的程序?qū)斎氲氖M(jìn)制數(shù)加密〔把輸入的字符轉(zhuǎn)化成整數(shù)。例如,輸入兩個(gè)字符1F,轉(zhuǎn)化成二進(jìn)制數(shù)000lllll〕,比擬輸入和輸出。當(dāng)把輸入的數(shù)改變一個(gè)位時(shí)〔如把1F變?yōu)?E〕,比擬輸出的變化,并說明原因。四、實(shí)驗(yàn)內(nèi)容和步驟〔1〕使用附錄提供的程序?qū)σ粋€(gè)文件進(jìn)行加密和解密,程序代碼和執(zhí)行結(jié)果如下所示。程序代碼:intmain(intargc,char*argv[]){ //定義一個(gè)文件輸入流類對(duì)象infile ifstreaminfile("Arthas.txt",ios::in); if(infile==0){ cout<<"出錯(cuò)啦?。?<<endl; exit(1); } //定義一個(gè)文件輸出流類對(duì)象outfile ofstreamoutfile("encreption.txt",ios::out); if(outfile==0){ cout<<"錯(cuò)啦!"<<endl; exit(1); } //定義一些變量 inti=0; unsignedcharplain[9]="12345678",encreption[9]="12345678",key[8]={'a','b','c','d','a','b','c','d'}; symmetric_keyskey; des_setup(key,8,0,&skey);// des_ecb_encrypt(pt,ct,&skey); while(infile.eof()!=1){ infile>>plain[i]; i++; if(i==8){ plain[9]='\0'; des_ecb_encrypt(plain,encreption,&skey); for(intj=0;j<8;j++) outfile<<encreption[j]; //outfile<<'\0'; i=0; } } for(;i<9;i++) plain[i]=''; plain[9]='\0'; des_ecb_encrypt(plain,encreption,&skey); for(intj=0;j<8;j++) outfile<<encreption[j]; //outfile<<'\0'; infile.close(); outfile.close();//解密 ifstreaminfile1("encreption.txt",ios::in); if(infile1==0){ cout<<"出錯(cuò)啦??!"<<endl; exit(1); } ofstreamoutfile1("encreption1.txt",ios::out); if(outfile1==0){ cout<<"錯(cuò)啦!"<<endl; exit(1); } while(infile1.eof()!=1){ infile1>>plain[i]; i++; if(i==8){ plain[9]='\0'; des_ecb_encrypt(plain,encreption,&skey); for(intj=0;j<8;j++) outfile1<<encreption[j]; //outfile1<<'\0'; i=0; } } for(;i<9;i++) plain[i]=''; plain[9]='\0'; des_ecb_encrypt(plain,encreption,&skey); for(j=0;j<8;j++) outfile1<<encreption[j]; //outfile1<<'\0'; infile1.close(); outfile1.close(); //cout<<"ASDF"; system("PAUSE");return0;}程序執(zhí)行結(jié)果:例如plaintext.txt存放的明文為:加密后的密文為:解密后的明文為:〔2〕使用附錄提供的程序?qū)斎氲氖M(jìn)制數(shù)加密〔把輸入的字符轉(zhuǎn)化成整數(shù)。例如,輸入兩個(gè)字符1F,轉(zhuǎn)化成二進(jìn)制數(shù)000lllll〕,比擬輸入和輸出。當(dāng)把輸入的數(shù)改變一個(gè)位時(shí)〔如把1F變?yōu)?E〕,比擬輸出的變化,并說明原因。程序:inttransfer(intoriginal){ if(original>=48&&original<=57) return(original-48); if(original>=65&&original<=70) return(original-55); if(original>=97&&original<=102) return(original-87); cout<<"出錯(cuò)啦"<<endl; return0;}intmain(intargc,char*argv[]){unsignedcharpt[9]="7653211",ct[9]="qwertyu",key[8]={'a','b','c','d','a','b','c','d'}; symmetric_keyskey; intfirst,second; boolagain=true; while(again){ cout<<"請(qǐng)輸入兩個(gè)十六進(jìn)制數(shù):"<<endl; first=getchar(); first=transfer(first); second=getchar(); second=transfer(second); cin.clear(); pt[0]=first/8+48; first=first%8; pt[1]=first/4+48; first=first%4; pt[2]=first/2+48; first=first%2; pt[3]=first+48; pt[4]=second/8+48; second=second%8; pt[5]=second/4+48; second=second%4; pt[6]=second/2+48; second=second%2; pt[7]=second+48; pt[8]='\0'; ct[8]='\0'; des_setup(key,8,0,&skey); des_ecb_encrypt(pt,ct,&skey); printf("%s\n",pt); printf("%s\n",ct); cin.ignore(numeric_limits<streamsize>::max(),'\n'); cout<<"還想繼續(xù)嗎?是的話按任何鍵繼續(xù),否那么輸入N,結(jié)束"<<endl; chara; a=getchar(); //cout<<a; cin.clear(); if(a=='n'||a=='N') again=false; cin.ignore(numeric_limits<streamsize>::max(),'\n'); } system("PAUSE");return0;}程序輸出結(jié)果如下列圖所示:可以發(fā)現(xiàn)就算是只相差一個(gè)位,但是他們的密文完全沒有規(guī)律可循,這就保證了數(shù)據(jù)加密的可靠性,至于這樣的原因DE
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)外墻構(gòu)造詳圖
- 2025年度砂石廠員工培訓(xùn)與發(fā)展合同3篇
- 2025年度科研試驗(yàn)合同:活動(dòng)板房作為科研試驗(yàn)平臺(tái)的租賃3篇
- 超市調(diào)研課程設(shè)計(jì)
- 二零二五年度建筑施工現(xiàn)場(chǎng)安全應(yīng)急預(yù)案編制合同范例
- 2025版環(huán)境監(jiān)測(cè)網(wǎng)絡(luò)建設(shè)環(huán)境行政服務(wù)合同3篇
- 2025年期貨交易工作計(jì)劃范文(2篇)
- 關(guān)于員工請(qǐng)假規(guī)章制度
- 2025年新世紀(jì)版八年級(jí)地理上冊(cè)階段測(cè)試試卷含答案
- 2025年滬教版八年級(jí)化學(xué)上冊(cè)階段測(cè)試試卷
- 山東省濟(jì)寧市2023-2024學(xué)年高一上學(xué)期1月期末物理試題(解析版)
- 宜賓天原5萬噸氯化法鈦白粉環(huán)評(píng)報(bào)告
- 教育機(jī)構(gòu)年度總結(jié)和來年規(guī)劃
- 2024年工廠股權(quán)轉(zhuǎn)讓盡職調(diào)查報(bào)告3篇
- 山東省濟(jì)南市歷城區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)模擬試題(無答案)
- 醫(yī)療器械考試題及答案
- 初三家長(zhǎng)會(huì)數(shù)學(xué)老師發(fā)言稿
- 責(zé)任護(hù)理組長(zhǎng)競(jìng)選
- 法人代持免責(zé)任協(xié)議書(2篇)
- 閘站監(jiān)理實(shí)施細(xì)則
- 2024-2025學(xué)年湖北省恩施土家族苗族自治州數(shù)學(xué)六上期末檢測(cè)試題含解析
評(píng)論
0/150
提交評(píng)論