下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
#include<iostream>usingnamespacestd;int*out;//用于函數(shù)中返回結(jié)果的指針,如果寫在函數(shù)中會被銷毀,得不到返回的指針intKey[10];//10位密鑰intsubKey1[8],subKey2[8];//兩個8位的子密鑰intplaintext[8];//8位明文intS0[4][4]={{1,0,3,2},{3,2,1,0},{0,2,1,3},{3,1,3,2}};//S0盒子intS1[4][4]={{0,1,2,3},{2,0,1,3},{3,0,1,0},{2,1,0,3}};//S1盒子//生成子密鑰的函數(shù)voidcreateSubKey(){intbuff[10];buff[0]=Key[2];buff[1]=Key[4];buff[2]=Key[1];buff[3]=Key[6];buff[4]=Key[3];buff[5]=Key[9];buff[6]=Key[0];buff[7]=Key[8];buff[8]=Key[7];buff[9]=Key[5];for(inti=0;i<10;i++){Key[i]=buff[i];}/*左邊5位LS-1置換*/inttemp=buff[0];for(inti=1;i<5;i++){buff[i-1]=buff[i];}buff[4]=temp;/*右邊5位LS-1置換*/for(inti=6;i<10;i++){buff[i-1]=buff[i];)buff[9]=temp;/*將結(jié)果寫入subKey1*/subKey1[0]=buff[5];subKey1[1]=buff[2];subKey1[2]=buff[6];subKey1[3]=buff[3];subKey1[4]=buff[7];subKey1[5]=buff[4];subKey1[6]=buff[9];subKey1[7]=buff[8];/*左邊5位LS-2置換*/temp=buff[0];inttemp2=buff[1];for(inti=2;i<5;i++){buff[i-2]=buff[i];)buff[3]=temp;buff[4]=temp2;/*右邊5位LS-2置換*/temp=buff[5];temp2=buff[6];for(inti=7;i<10;i++){buff[i-2]=buff[i];)buff[8]=temp;buff[9]=temp2;/*將結(jié)果寫入subKey2*/subKey2[0]=buff[5];subKey2[1]=buff[2];subKey2[2]=buff[6];subKey2[3]=buff[3];subKey2[4]=buff[7];subKey2[5]=buff[4];subKey2[6]=buff[9];subKey2[7]=buff[8];)//IP置換int*IP(int*p){out=newint[8];TOC\o"1-5"\h\zout[0]=p[1];out[1]=p[5];out[2]=p[2];out[3]=p[0];out[4]=p[3];out[5]=p[7];out[6]=p[4];out[7]=p[6];returnout;)//FP置換(IP的逆置換)int*FP(int*p){out=newint[8];TOC\o"1-5"\h\zout[0]=p[3];out[1]=p[0];out[2]=p[2];out[3]=p[4];out[4]=p[6];out[5]=p[1];out[6]=p[7];out[7]=p[5];returnout;)//異或操作intXORQnta,intb){if(a!=b)return1;elsereturn0;)//F操作int*F(int*Rint*sk){intbuff[8];//E/P操作TOC\o"1-5"\h\zbuff[0]=R[3];buff[1]=R[0];buff[2]=R[1];buff[3]=R[2];buff[4]=R[1];buff[5]=R[2];buff[6]=R[3];buff[7]=R[0];//與子密鑰異或for(inti=0;i<8;i++)buff[i]=XOR(buff[i],sk[i]);//S盒子操作introw,col;if(buff[0]==0){if(buff[3]==0)row=0;elserow=1;}else{if(buff[3]==0)row=2;elserow=3;}if(buff[1]==0)col=0;elsecol=2;if(buff[2]!=0)col=col+1;/*S0盒子輸出*/intout1=S0[row][col];if(buff[4]==0){if(buff[7]==0)row=0;elserow=1;}else{if(buff[7]==0)row=2;elserow=3;}if(buff[5]==0)col=0;elsecol=2;if(buff[6]!=0)col=col+1;/*S1盒子輸出*/
intout2=S1[row][col];out=newint[4];if(outl==0||outl==1)out[0]=0;elseout[0]=1;if(out1==1||out1==3)out[1]=1;elseout[1]=0;if(out2==0||out2==1)out[2]=0;elseout[2]=1;if(out2==1||out2==3)out[3]=1;elseout[3]=0;//置換P4buff[0]=out[1];buff[1]=out[3];buff[2]=out[2];buff[3]=out[0];for(inti=0;i<4;i++)out[i]=buff[i];returnout;}//fk操作int*Fk(int*L,int*R){//L異或F(R,SK)//L異或F(R,SK)//L異或F(R,SK)for(inti=0;i<4;i++)r1[i]=XOR(L[i],r1[i]);int*r2=F(r1,subKey2);for(inti=0;i<4;i++)r2[i]=XOR(R[i],r2[i]);out=newint[8];for(inti=0;i<4;i++)out[i]=r2[i];for(inti=4;i<8;i++)out[i]=r1[i-4];returnout;}//解密的fk操作(調(diào)換了子密鑰的順序)int*Fk2(int*L,int*R){int*r1=F(R,subKey2);for(inti=0;i<4;i++)r1[i]=XOR(L[i],r1[i]);int*r2=F(r1,subKey1);for(inti=0;i<4;i++)r2[i]=XOR(R[i],r2[i]);out=newint[8];for(inti=0;i<4;i++)out[i]=r2[i];for(inti=4;i<8;i++)out[i]=r1[i-4];returnout;)intmain(){cout<<"請輸入10位密鑰,每位為1或0,用空格分隔(例:1010000010):\n"for(inti=0;i<10;i++){cin>>Key[i];)createSubKey();cout<<"子密鑰1:\t";for(inti=0;i<8;i++){cout<<subKey1[i];)cout<<"\t";cout<<"子密鑰2:\t";for(inti=0;i<8;i++){cout<<subKey2[i];)cout<<"\n請輸入8位明文,每位為1或0,用空格分隔(例:10111101):\n";for(inti=0;i<8;i++){cin>>plaintext[i];)int*s;s=IP(plaintext);intL[4];for(inti=0;i<4;i++)L[i]=s[i];intR[4];for(inti=4;i<8;i++)R[i-4]=s[i];s=Fk(L,R);s=FP(s);/*inta[4]={1,0,0,1};intb[8]={1,0,0,1,1,0,0,1};s=F(a,b);*/cout<<"加密后的密文如下:\n";for(inti=0;
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度版權(quán)許可合同許可方式
- 2024年城市軌道交通建設(shè)與運營管理承包合同
- 2024小產(chǎn)權(quán)房買賣合同(買方)范本
- 2024年度通信工程安全施工質(zhì)量保證合同
- 2024年度學(xué)生轉(zhuǎn)學(xué)與安全責(zé)任承諾合同
- 2024年度物業(yè)租賃合同:高端商務(wù)樓物業(yè)管理與租賃合同
- 2024年廣告投放合同投放策略與違約金
- 2024年家具企業(yè)員工股權(quán)激勵計劃合同
- 2024年度影視制作合同標(biāo)的及制作要求
- 2024丙丁雙方關(guān)于合作開展物流業(yè)務(wù)的戰(zhàn)略合作協(xié)議
- 大班幼兒學(xué)情分析報告
- 北師大版三年級數(shù)學(xué)上冊第六單元《乘法》(大單元教學(xué)設(shè)計)
- 紡織品購銷合同(5篇)
- 體育市場營銷智慧樹知到期末考試答案章節(jié)答案2024年西華大學(xué)
- 【課件】第15課+權(quán)力與理性-17、18世紀(jì)西方美術(shù)+課件-高中美術(shù)人教版(2019)美術(shù)鑒賞
- 兒童早期的認(rèn)知發(fā)展-皮亞杰前運算階段(三座山實驗)
- 2024年極兔速遞有限公司招聘筆試參考題庫附帶答案詳解
- 2024年威士忌酒相關(guān)公司行業(yè)營銷方案
- 網(wǎng)絡(luò)游戲危害課件
- 2024供電營業(yè)規(guī)則學(xué)習(xí)課件
- 鐵路給水排水設(shè)計規(guī)范(TB 10010-2016)
評論
0/150
提交評論