版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)1古典密碼算法一、 實(shí)驗(yàn)?zāi)康耐ㄟ^編程實(shí)現(xiàn)替代密碼算法和置換密碼算法,加深對(duì)古典密碼體系的了解,為以后深入學(xué)習(xí)密碼學(xué)奠定基礎(chǔ)。二、 實(shí)驗(yàn)原理古典密碼算法曾被廣泛應(yīng)用,大都比較簡(jiǎn)單。它的主要應(yīng)用對(duì)象是文字信息,利用密碼算法實(shí)現(xiàn)文字信息的加密和解密。其中替代密碼和置換密碼是具有代表性的兩種古典密碼算法。1、 替代密碼 替代密碼算法的原理是使用替代法進(jìn)行加密,就是將明文中的字符用其他字符替代后形成密文。例如,明文字母a、b、c、d,用D、E、F、G做對(duì)應(yīng)替換后形成密文。最早的替代密碼是由Julius Caesar 發(fā)明的Caesar (愷撒)密碼,又叫循環(huán)移位密碼。它的加密過程可以表示為下面的函數(shù)
2、: E(m) = (m+k ) mod n其中,m為明文字母在字母表中的位置數(shù);n為字母表中的字母?jìng)€(gè)數(shù);k為密鑰;E(m)為密文字母在字母表中對(duì)應(yīng)的位置數(shù)。 例如,對(duì)于明文字母H,其在字母表中的位置數(shù)為8,設(shè)k=4,則按照上式計(jì)算出來的密文為L(zhǎng),計(jì)算過程如下: E(8) = (m+k ) mod n = (8+4 ) mod 26 = 12 = L解密算法是:m = D(L) =(L-k)mod 262、 置換密碼置換密碼算法的原理是不改變明文字符,只將字符在明文中的排列順序改變,從而實(shí)現(xiàn)明文信息的加密。置換密碼又稱為換位密碼。矩陣換位法是實(shí)現(xiàn)置換密碼的一種常用方法。它將明文中的字母按照給定的
3、順序安排在一個(gè)矩陣中,然后又根據(jù)密鑰提供的順序重新組合矩陣中的字母,從而形成密文。例如,明文為 attack begins at five ,密鑰為 cipher ,將明文按照每行6個(gè)字母的形式排在矩陣中,形成如下形式: attack begins atfive根據(jù)密鑰 cipher 中各字母在字母表中出現(xiàn)的先后順序,得到給定的一個(gè)置換: f = 1 4 5 3 2 6因此有: 密鑰: 145326 明文: attack begins atfive根據(jù)上面的置換,將原有矩陣中的字母按照第1列、第4列、第5列、第3列、第2列、第6列的順序排列、則有下面的形式:aacttk binges aivf
4、te從而得到密文:abatgftetcnvaiikse其解密過程是根據(jù)密鑰的字母數(shù)作為列數(shù),將密文按照列、行的順序?qū)懗?,再根?jù)由密鑰給出的矩陣置換產(chǎn)生新的矩陣,從而恢復(fù)明文。三、 實(shí)驗(yàn)環(huán)境PC機(jī),C或C+編譯環(huán)境四、 實(shí)驗(yàn)內(nèi)容和步驟1、 替代算法:(1) 根據(jù)實(shí)驗(yàn)遠(yuǎn)離部分對(duì)替代密碼算法的介紹,創(chuàng)建明文信息,并選擇一個(gè)密鑰k,編寫替代密碼算法的實(shí)現(xiàn)程序,實(shí)現(xiàn)加密和解密操作。 替代密碼包括多種類型,如單表替代密碼、多明碼替代密碼、多字母替代密碼、多表替代密碼等。(2) 結(jié)果截圖:(3) 流程圖:開始創(chuàng)建明文信息輸入密鑰加密操作解密操作結(jié)束2、 置換算法(1) 置換密碼算法的原理是不改變明文字符,只
5、將字符在明文中的排列順序改變,從而實(shí)現(xiàn)明文信息的加密。置換密碼有時(shí)又稱為換位密碼。 矩陣換位法是實(shí)現(xiàn)置換密碼的一種常用方法。它將明文中的字母按照給的順序安排在一個(gè)矩陣中,然后用根據(jù)密鑰提供的順序重新組合矩陣中字母,從而形成密文。(2) 實(shí)驗(yàn)截圖:(3)開始創(chuàng)建明文信息輸入密鑰加密操作解密操作結(jié)束1、 回答問題:試分析兩種密碼算法的安全性,以及如何改進(jìn)。替代密碼中使用特定的公式將結(jié)果加密并得到結(jié)果,以此并加以加密和解密,算法比較簡(jiǎn)單。置換密碼中使用二維數(shù)組對(duì)信息進(jìn)行加密和解密,這中工作使信息安全性更好一些2、 本次實(shí)驗(yàn)的體會(huì)總結(jié)。了解古典密碼算法并不代表能寫出來程序,除了寫程序要注意的各個(gè)細(xì)節(jié),
6、還要將腦海里的想法轉(zhuǎn)化為流程圖并用c語言實(shí)現(xiàn)。感覺做出的程序并不是很好,替代算法簡(jiǎn)單一點(diǎn),置換算法花費(fèi)了大量的時(shí)間,還只是勉強(qiáng)成功。意識(shí)到自己太弱,還需要付出更多的努力。替代密碼:#include<stdio.h> #include<math.h> #include<string.h> #include<conio.h>#define N 500 int main() int i=0,k,m,n,l; char str1N,str2N; /*C=M+K.K is key.*/ textbackground(RED);textcolor(LIGHT
7、GREEN);clrscr(); printf("This is a code password program.n"); printf("Please input proclaimed in writing(M):n"); gets(str1);/*輸入要加密的明文M*/ printf("Please input the key(K)(int):n"); scanf("%d",&k);/*輸入密鑰K*/ m=strlen(str1);/*測(cè)試明文的長(zhǎng)度*/ printf("The M lengt
8、h is %dn",m); printf("ciphertext(C) is :nn"); for(i=0;i<m;i+)/*加密的過程*/ n=(int)str1i;/*將字符轉(zhuǎn)換成ASCII*/ if(str1i=' ')/*如果字符串中出現(xiàn)空格返回空格*/ printf(" "); str2i=str1i; else if(n>96&&n<123)/*對(duì)小寫進(jìn)行加密*/ n=(n-97+k)%26; if(n<0) n=26+n; l=(char)(n+97); printf(&qu
9、ot;%c",l); str2i=l; else if(n>64&&n<91)/*對(duì)大寫進(jìn)行加密*/ n=(n-65+k)%26; if(n<0) n=26+n; l=(char)(n+97); printf("%c",l); str2i=l; str2i='0' /*-*/ printf("nnThe C length is %d",strlen(str2); printf("When the ciphertext is '%s',nThe password prog
10、ram is.:nn",str2); m=strlen(str2); for(i=0;i<m;i+)/*解密過程*/ n=(int)str2i;/*將字符轉(zhuǎn)換成ASCII*/ if(str2i=' ')/*如果是空格,返回的也是空格*/ printf(" "); else if(n>96&&n<123)/*對(duì)小寫進(jìn)行解密*/ n=(n-97-k)%26; if(n<0) n=26+n; l=(char)(n+97); printf("%c",l); else if(n>64&
11、&n<91)/*對(duì)大寫進(jìn)行解密*/ n=(n-65-k)%26; if(n<0) n=26+n; l=(char)(n+97); printf("%c",l); str1i='0' getch(); return 0; 置換算法:#include<stdio.h> #include<math.h> #include<string.h>#include<conio.h> #define N 100 int main() /*-*/ int i,j,lenK,lenM,m,n,temp; int
12、 TN; char KN,MN,CN,Temp1N,Temp2N,Temp3N;textbackground(GREEN);textcolor(RED); clrscr(); /*-*/ printf("This is a substitution cipher.n"); printf("Please input the M:n");/*輸入明文M*/ gets(M); printf("Please input the K:n");/*輸入密鑰K*/ gets(K); lenK=strlen(K); lenM=strlen(M);/*
13、測(cè)設(shè)長(zhǎng)度*/ m=lenM/lenK; n=lenK;/*定義矩陣的長(zhǎng)和寬*/ for(i=0;i<lenK;i+)/*對(duì)密鑰進(jìn)行數(shù)字排序*/ temp=0; for(j=0;j<lenK;j+) if(int)Ki<(int)Kj) temp+=1; Ti=lenK-temp; printf("%d ",Ti);/*輸出各字符對(duì)應(yīng)的數(shù)字順序*/ /*-*/ printf("nnFirst.nn"); for(i=0;i<m;i+)/*根據(jù)密鑰將明文排列成矩陣*/ for(j=0;j<n;j+) Temp1i*lenK+j=
14、Mi*lenK+j; printf("%c ",Temp1i*lenK+j); printf("n"); Temp1lenM='0' /*-*/ printf("nSecond.nn");/*進(jìn)行第一次置換*/ for(i=0;i<lenK;i+) for(j=0;j<m;j+) Temp2j*lenK+i=Temp1j*lenK+Ti-1; Temp2lenM='0' for(i=0;i<m;i+) for(j=0;j<lenK;j+) printf("%c ",Temp2i*lenK+j); printf("n"); /*-*/ printf("nThird.nn");/*進(jìn)行第二次置換*/ for(i=0;i<lenK;i+) for(j=0;j<m;j+) Temp3j*lenK+i=Temp2j*lenK+Ti-1; Temp3lenM='0' for(i=0;i<m;i+) for(j=0;j<l
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年蘇教新版七年級(jí)物理下冊(cè)階段測(cè)試試卷含答案
- 2025年人教版選修3歷史上冊(cè)階段測(cè)試試卷含答案
- 2025年浙科版七年級(jí)物理下冊(cè)階段測(cè)試試卷含答案
- 2025年湘師大新版八年級(jí)生物下冊(cè)階段測(cè)試試卷含答案
- 2025年北師大版八年級(jí)生物上冊(cè)階段測(cè)試試卷含答案
- 2025年湘教版選修4歷史下冊(cè)月考試卷含答案
- 基于機(jī)器學(xué)習(xí)的2025年度金融風(fēng)險(xiǎn)評(píng)估合同2篇
- 二零二五年度假離婚案件律師代理與風(fēng)險(xiǎn)控制合同3篇
- 2025年度農(nóng)業(yè)農(nóng)業(yè)生態(tài)修復(fù)技術(shù)聘用合同3篇
- 二零二五年度出差意外傷害免責(zé)與保險(xiǎn)理賠合同范本4篇
- 完整版秸稈炭化成型綜合利用項(xiàng)目可行性研究報(bào)告
- 油氣行業(yè)人才需求預(yù)測(cè)-洞察分析
- 《數(shù)據(jù)采集技術(shù)》課件-Scrapy 框架的基本操作
- 2025年河北省單招語文模擬測(cè)試二(原卷版)
- 高一化學(xué)《活潑的金屬單質(zhì)-鈉》分層練習(xí)含答案解析
- DB34∕T 4010-2021 水利工程外觀質(zhì)量評(píng)定規(guī)程
- 2024年內(nèi)蒙古中考英語試卷五套合卷附答案
- 2024年電工(高級(jí))證考試題庫及答案
- 三年級(jí)上冊(cè)脫式計(jì)算100題及答案
- 儲(chǔ)能電站火災(zāi)應(yīng)急預(yù)案演練
- 人教版(新插圖)二年級(jí)下冊(cè)數(shù)學(xué) 第4課時(shí)用“進(jìn)一法”和“去尾法”解決簡(jiǎn)單的實(shí)際問題 教學(xué)課件
評(píng)論
0/150
提交評(píng)論