凱撒密碼的加密和解密_第1頁(yè)
凱撒密碼的加密和解密_第2頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余4頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、關(guān)于凱撒密碼的實(shí)現(xiàn)原理班級(jí): 姓名: 學(xué)號(hào): 指導(dǎo)老師:一、 設(shè)計(jì)要求說(shuō)明1、 設(shè)計(jì)一個(gè)凱撒密碼的加密和解密的程序,要求輸入一段字符和密碼, 輸出相應(yīng)的密文, 完成加密過(guò)程;若輸入被加密的密文及解密密鑰,能還原出原文,完成解密。2、 語(yǔ)言不限,工具不限,獨(dú)立完成,參加答辯。3、 嚴(yán)格按照格式的要求完成文檔,在第六部分的運(yùn)行結(jié)果分析中,要求抓圖說(shuō)明。二、 基礎(chǔ)知識(shí)介紹 凱撒密碼的歷史凱撒密碼(caese)是羅馬擴(kuò)張時(shí)期朱利斯?凱撒(Julius Caesar)創(chuàng)造的,用于加密通過(guò)信使傳遞的作 戰(zhàn)命令。它將字母表中的字母移動(dòng)一定位置而實(shí)現(xiàn)加密。古羅馬隨筆作家修托尼厄斯在他的作品中披露,凱撒常用一種

2、 “密表 ”給他的朋友寫(xiě)信。這里所說(shuō)的密 表,在密碼學(xué)上稱(chēng)為 “凱撒密表 ”。用現(xiàn)代的眼光看,凱撒密表是一種相當(dāng)簡(jiǎn)單的加密變換,就是把明文中 的每一個(gè)字母用它在字母表上位置后面的第三個(gè)字母代替。古羅馬文字就是現(xiàn)在所稱(chēng)的拉丁文,其字母就 是我們從英語(yǔ)中熟知的那26個(gè)拉丁字母。因此,凱撒密表就是用d代a,用e代b,,用z代w。這些代替規(guī)則也可用一張表格來(lái)表示,所以叫 “密表”?;驹碓诿艽a學(xué)中存在著各種各樣的置換方式,但所有不同的置換方式都包含2個(gè)相同的元素。密鑰和協(xié)議(算法)。凱撒密碼的密鑰是3,算法是將普通字母表中的字母用密鑰對(duì)應(yīng)的字母替換。置換加密的優(yōu)點(diǎn)就 在于它易于實(shí)施卻難于破解.發(fā)送方

3、和接收方很容易事先商量好一個(gè)密鑰,然后通過(guò)密鑰從明文中生成密 文,即是敵人若獲取密文,通過(guò)密文直接猜測(cè)其代表的意義,在實(shí)踐中是不可能的。凱撒密碼的加密算法極其簡(jiǎn)單。其加密過(guò)程如下:在這里,我們做此約定:明文記為m,密文記為c,加密變換記為E(k1,m)(其中k1為密鑰),解密變換記為D(k2,m)(k2為解密密鑰)(在這里k1=k2,不妨記為k)。凱撒密碼的加密過(guò)程可記為如下一個(gè)變換:c=m+k modn(其中n為基本字符個(gè)數(shù))同樣,解密過(guò)程可表示為:m=c+k mod n(其中n為基本字符個(gè)數(shù))對(duì)于計(jì)算機(jī)而言,n可取256或128,m、k、c均為一個(gè)8bit的二進(jìn)制數(shù)。顯然,這種加密算法極不

4、 安全,即使采用窮舉法,最多也只要255次即可破譯。當(dāng)然,究其本身而言,仍然是一個(gè)單表置換,因此, 頻率分析法對(duì)其仍是有效的。加密解密算法愷撒密碼的替換方法是通過(guò)排列明文和密文字母表,密文字母表示通過(guò)將明文字母表向左或向右移動(dòng) 一個(gè)固定數(shù)目的位置。例如,當(dāng)偏移量是左移3的時(shí)候(解密時(shí)的密鑰就是3): 明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC使用時(shí),加密者查找明文字母表中需要加密的消息中的每一個(gè)字母所在位置,并且寫(xiě)下密文字母表中 對(duì)應(yīng)的字母。需要解密的人則根據(jù)事先已知的密鑰反過(guò)來(lái)操作,得到原來(lái)的明文。例如:

5、明文:THE QUICK BROWN FOX JUMPS OVER THELAZY DOG密文:WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ愷撒密碼的加密、解密方法還能夠通過(guò)同余數(shù)的數(shù)學(xué)方法進(jìn)行計(jì)算。首先將字母用數(shù)字代替,A=0,B=1,Z=25。此時(shí)偏移量為n的加密方法即為:E (x)= (x+n) mod 2解密就是:D (x)= (x-n) mod 2三、 環(huán)境介紹 編程語(yǔ)言C語(yǔ)言編譯環(huán)境Microsoft Visual Studio 2010操作系統(tǒng)Windows ,四、 思路以及算法分析 定義兩個(gè)字符數(shù)組char p1000和char c10

6、00,用來(lái)存放明文和密文。定義一個(gè)key,表示移位的個(gè)數(shù)。這是加密解密的關(guān)鍵。 綜合考慮到在密表尾部的字母加密或解密的時(shí)候會(huì)循環(huán)移動(dòng)到密表頭部,所以加密、 解密語(yǔ)句分別為:ci=(pi-a+key)%26+a向后移動(dòng)keypi=z-(z+key-ci)%26向前移動(dòng)key五、 源程序代碼#includevoid main()char p1000;char c1000;int key,i,m;key=5;/*定義一個(gè)移位個(gè)數(shù)為5,即加密向右移5位,解密則相反*/printf(please input the Plaintext: n);gets(p);/*讀取字符串,直至接受到換行符停止,并將讀

7、取的結(jié)果存放在p1000中。換行符不作為讀取串的內(nèi)容,讀取的換行符被轉(zhuǎn)換為null值,并由此來(lái)結(jié)束字符串。*/for(i=0;pi!=0;i+)ci=(pi-a+key)%26+a;/*加密算法,所有明文符號(hào)由向右移5位的密文代替*/ci=0;printf(the Ciphertext is:n%sn,c);/*輸出加密后的密文*/printf(please input the Ciptertext:n);gets(c);/*讀取字符串,直至接受到換行符停止,并將讀取的結(jié)果存放在c1000中。換行符不作為讀取串的內(nèi)容,讀取的換行符被轉(zhuǎn)換為null值,并由此來(lái)結(jié)束字符串。*/for(i=0;ci

8、!=0;i+)pi=z-(z+key-ci)%26;/*解密算法,所有明文符號(hào)由向左移5位的明文代替*/pi=0;printf(the Plaintext is:n%sn,p);/*輸出解密后的明文*/回車(chē)后,輸出加密后的密文:xjhzw nydreturn;六、運(yùn)行結(jié)果分析試對(duì)明文security進(jìn)行加密,再將其解密:3/1NDOWSsystem32cmd, exehleae inipLtt Plaintext:輸入明文security: C:呷TIWOHS、號(hào)ystfudZcnid*EX令-g| *ploa&o ripijit tiw Plaintext - KRCUFltHn)0

9、輸入security的密文xjhzwnyd|plac& inijputPlaintext* pFsmiFiFile .Emi SegiFuh Run onpil Enhu實(shí)PircdEut OptionsOutputSSuETl= I J- -HelpScrollB C:WIWDOWSsystem32cnid. exe回車(chē)后出現(xiàn)解密后的明文security:H G; W TN00W3s yHI. e?m2 cuid exe(please lnuut the Plaintext:security七、總結(jié)與不足 程序是在幾個(gè)小時(shí)內(nèi)測(cè)試運(yùn)行成功的。 凱撒密碼是密碼學(xué)中, 一種最簡(jiǎn)單的加密算法。 原理并不復(fù)雜,只要理解了,實(shí)現(xiàn)起來(lái)并不困難。程序并不長(zhǎng),基本實(shí)現(xiàn)了對(duì)于凱撒密碼的加密和解密過(guò)程。但其中還存 在很多不足,比如,這段代碼并沒(méi)有給出當(dāng)遇到空格或者別的符號(hào)的處理方法,又比如代碼只給出了當(dāng)字 符是在a到z的情況下的解決方法,而從A到Z則沒(méi)有給出等等。因此,還有很多地方還可以進(jìn)行改進(jìn):1.可以在開(kāi)始設(shè)置一個(gè)選擇,是進(jìn)行加密還是解密;2.可以將key設(shè)為一個(gè)整型變量,在程序運(yùn)行開(kāi)始時(shí)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論