資源描述:
《華工信息安全實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、實(shí)驗(yàn)一古典密碼算法一、實(shí)驗(yàn)原理古典密碼算法歷史上曾被廣泛應(yīng)用,大都比較簡(jiǎn)單,使用手工和機(jī)械操作來(lái)實(shí)現(xiàn)加密和解密。它的主要應(yīng)用對(duì)象是文字信息,利用密碼算法實(shí)現(xiàn)文字信息的加密和解密。下面介紹兩種常見的具有代表性的古典密碼算法,以幫助讀者對(duì)密碼算法建立一個(gè)初步的印象。⒈替換密碼替換密碼算法的原理是使用替代法進(jìn)行加密,就是將明文中的字符用其它字符替代后形成密文。例如明文字母a、b、c、d,用D、E、F、G做對(duì)應(yīng)替換后形成密文。替換密碼包括多種類型,如單表替代密碼、多明碼替代密碼、多字母替代密碼、多表替代密碼等。下面我們介紹一種典型的單表替代密碼—?jiǎng)P撒密碼,又叫循環(huán)移位密碼。它的加密方法就是將明
2、文中的每個(gè)字母用此字符在字母表中后面第k個(gè)字母替代。它的加密過(guò)程可以表示為下面的函數(shù):Ek(m)=(m+k)modn其中,m為明文字母在字母表中的位置數(shù);n為字母表中的字母?jìng)€(gè)數(shù);k為密鑰;Ek(m)為密文字母在字母表中對(duì)應(yīng)的位置數(shù)。例如,對(duì)于明文字母H,其在字母表中的位置數(shù)為8,設(shè)k=4,則按照上式計(jì)算出來(lái)的密文L,計(jì)算過(guò)程如下:E(8)=(m+k)modn=(8+4)mod26=12=L⒉置換密碼置換密碼算法的原理是不改變明文字符,只將字符在明文中的排列順序改變,從而實(shí)現(xiàn)明文信息的加密。置換密碼有時(shí)又稱為換位密碼。矩陣換位法是實(shí)現(xiàn)置換密碼的一種常用方法。它將明文中的字母按照給定的順序
3、安排在一個(gè)矩陣中,然后用根據(jù)密鑰提供的順序重新組合矩陣中的字母,從而形成密文。例如,明文為attackbeginsatfive,密鑰為cipher,將明文按照每行6個(gè)字母的形式排在矩陣中,形成如下形式:attackbeginsatfIve根據(jù)密鑰cipher中各字母在字母表中出現(xiàn)的先后順序,給定一個(gè)置換:123456145326f=根據(jù)上面的置換,將原有矩陣中的字母按照第1列、第4列、第5列、第3列、第2列、第6列的順序排列、則有下面的形式:aacttkbingesaivfte從而得到密文:abaaiicnvtgftetkse其解密的過(guò)程是根據(jù)密鑰的字母數(shù)作為列數(shù),將密文按照列數(shù)、行的
4、順序?qū)懗?,再根?jù)由密鑰給出的矩陣置換產(chǎn)生新的矩陣,從而恢復(fù)明文。二、實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)編程實(shí)現(xiàn)替代密碼算法和置換密碼算法,加深對(duì)古典密碼體制的了解,為深入學(xué)習(xí)密碼學(xué)奠定基礎(chǔ)。三、實(shí)驗(yàn)環(huán)境運(yùn)行Windows或Linux操作系統(tǒng)的PC機(jī),具有g(shù)cc(Linux)、VC(Windows)等C語(yǔ)言編譯環(huán)境。四、實(shí)驗(yàn)內(nèi)容和步驟1.根據(jù)實(shí)驗(yàn)原理部分對(duì)替代密碼算法的介紹,自己創(chuàng)建明文信息,并選擇一個(gè)密鑰,編寫替代密碼算法的實(shí)現(xiàn)程序,實(shí)現(xiàn)加密和解密操作。2.根據(jù)實(shí)驗(yàn)原理部分對(duì)置換密碼算法的介紹,自己創(chuàng)建明文信息,并選擇一個(gè)密鑰,編寫置換密碼算法的實(shí)現(xiàn)程序,實(shí)現(xiàn)加密和解密操作。五、實(shí)驗(yàn)報(bào)告要求要求上述密碼算法
5、最后的實(shí)現(xiàn)程序提供加密和解密兩個(gè)接口:intencrypt()和intdecrypt()。當(dāng)加密或者解密成功時(shí)返回CRYPT_OK,失敗時(shí)返回CRYPT_ERROR。六、實(shí)驗(yàn)結(jié)果1.替代密碼根據(jù)實(shí)驗(yàn)遠(yuǎn)離部分對(duì)替代密碼算法的介紹,創(chuàng)建明文信息,并選擇一個(gè)密鑰k,編寫替代密碼算法的實(shí)現(xiàn)程序,實(shí)現(xiàn)加密和解密操作。替代密碼包括多種類型,如單表替代密碼、多明碼替代密碼、多字母替代密碼、多表替代密碼等。替代密碼算法的遠(yuǎn)離是使用替代法進(jìn)行加密,就是將明文的字符用其他字符替代后形成密文。例如字母a、b、c、d,用D、E、F、G做對(duì)應(yīng)替換后形成密文。結(jié)果:#include#includ
6、e#include#include#include#defineN500intsystem(constchar*string);intmain(){/*--------------------------------*/inti=0,k,m,n,l;charstr1[N],str2[N];/*C=M+K...Kiskey...*/system("cls");/*--------------------------------*/printf("請(qǐng)輸入明文:");gets(str1);/*輸入要加密的明文M*/
7、printf("請(qǐng)輸入密鑰:");scanf("%d",&k);/*輸入密鑰K*/m=strlen(str1);/*測(cè)試明文的長(zhǎng)度*/printf("明文長(zhǎng)度為%d",m);printf("密文是:");for(i=0;i