單表置換密碼的C代碼實(shí)現(xiàn)_第1頁
單表置換密碼的C代碼實(shí)現(xiàn)_第2頁
單表置換密碼的C代碼實(shí)現(xiàn)_第3頁
單表置換密碼的C代碼實(shí)現(xiàn)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、/單置換密碼的編程實(shí)現(xiàn)(c+)/作者信息: / /本程序使用方法:需要在本程序所在的文件夾創(chuàng)建一個(gè)"密碼學(xué).txt"文檔,/該程序所需要的數(shù)據(jù)全部由該文檔提供,然后運(yùn)行即可得到結(jié)果,如需要修改數(shù)據(jù),必須從文檔中人工修改/文檔格式的要求:文檔總共包含兩行。第一行由一個(gè)1或2的數(shù)字和一個(gè)字符串組成,數(shù)字1代表加密,2代表解密,字符串表示密鑰/第二行僅包含一個(gè)字符串,這個(gè)字符串是需要加密或解密的內(nèi)容。/該程序運(yùn)行結(jié)果直接由控制臺輸出運(yùn)行結(jié)果:#include<iostream>#include<string>#include<fstream>u

2、sing namespace std;ifstream in("密碼學(xué).txt");void jiami(char zhihuan); /加密函數(shù)void jiemi(char zhihuan); /解密函數(shù)void setzhihuan(char zhihuan,char fanzhihuanbiao); /設(shè)置置換表函數(shù)int main()int m; /確定是加密或解密?加密為1,解密為2char zhihuanbiao'z'+1; /正向置換表,加密時(shí)用char fanzhihuanbiao'z'+1; /反向置換表,解密時(shí)用cout

3、<<"加密按輸入1,解密輸入2"<<endl;in>>m; /讀入msetzhihuan(zhihuanbiao, fanzhihuanbiao); /設(shè)置置換表switch(m) /判斷m值,執(zhí)行相應(yīng)的功能case 1: jiami(zhihuanbiao);break;case 2: jiemi(fanzhihuanbiao);break;default:break;return 0;void jiami(char zhihuan) /加密string mingwen; /保存明文cout<<endl<<&qu

4、ot;請輸入明文:"getline(in,mingwen); /讀入明文cout<<mingwen<<endl; cout<<"加密后的密文為:"<<endl;for(int i=0; i<mingwen.length(); i+) /直接利用置換表輸出密文if(mingweni>='a' && mingweni<='z')cout<<zhihuan mingweni ;else cout<<mingweni;cout<&

5、lt;endl;void jiemi(char fanzhihuan)string miwen; /保存密文cout<<endl<<"請輸入密文:"getline(in,miwen); /讀入密文cout<<miwen<<endl;cout<<"解密后的明文為:"<<endl;for(int i=0; i<miwen.length(); i+) /直接利用反置換表輸出明文if(miweni>='a' && miweni<='z

6、')cout<<fanzhihuan miweni ;else cout<<miweni;cout<<endl;void setzhihuan(char zhihuanbiao,char fanzhihuanbiao)int i; /i和j是循環(huán)變量,除此之外沒有任何意義char j;string s; /密鑰cout<<"請輸入密鑰(大寫):"getline(in,s); /讀入密鑰cout<<s<<endl; /輸出密鑰cout<<"置換表為:"<<

7、;endl;string s1; for(i = 0 ; i < s.length();i+) /對密鑰進(jìn)行處理(去掉空格和重復(fù)的字符)bool sign =0; /標(biāo)志變量if(si >= 'a' && si <='z')for(int j = 0; j < s1.length();j+)if(si = s1j)sign = 1;break;if(sign = 0) s1 = s1 + si;else sign = 0;for( j ='a'j<='z'j+)cout<<

8、j<<" "cout<<endl; /輸出小寫字母 從a到zchar ch='a'for( i = 'a' ;i <= 'z' i+) /該循環(huán)利用密鑰得到置換表if(i < 'a' + s1.length() /前面直接用s1代替 zhihuanbiaoi = s1i-'a' else /后面將剩下的"貼"上去for(int j = 'a' j < 'a' + s1.length(); j+)if(ch = zhihuanbiaoj)ch+;j= 'a' /每次都從頭開始搜索continue;zhihuanbiaoi = ch; ch+;cout<<zhihuanbiaoi<<" " /同時(shí)輸出置換表cout<<endl;for( i='a' i<= 'z' i+) /該循環(huán)利用置換表得到反置換表fanzhihuan

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論