版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《C語言程序》課程設(shè)計報告書</p><p> 設(shè)計題目: 數(shù)據(jù)加密解密 </p><p> 專業(yè): 班級: </p><p> 學(xué)生姓名: 學(xué)號: </p><p> 指導(dǎo)教師:
2、 </p><p><b> 2010年06月</b></p><p><b> 信息工程學(xué)院</b></p><p><b> 目 錄</b></p><p> 摘 要 ……………………………………………………2</p><p> 第一章
3、 緒 論 …………………………………………3</p><p> 1 .1 C語言概述 …………………………………………3</p><p> 1 .2 C語言出現(xiàn)的歷史背景 ………………………………3</p><p> 第二章 開發(fā)環(huán)境及相關(guān)技術(shù)的介紹…………………4</p><p> 2 .1 開發(fā)環(huán)境的介紹 ………………………
4、……………4</p><p> 2 .2 有關(guān)開發(fā)環(huán)境的技術(shù) ………………………………4</p><p> 第三章 總體設(shè)計與詳細(xì)設(shè)計…………………………6</p><p> 3 .1 本程序解決的有關(guān)技術(shù)問題 …………………………6</p><p> 3 .2 本程序流程圖………………………………………9</p>
5、<p> 第四章 編碼實現(xiàn)……………………………………12</p><p> 4 .1 程序的總體實現(xiàn)與使用方法…………………………12</p><p> 4 .2 實現(xiàn)本程序的關(guān)鍵C技術(shù) …………………………13</p><p> 第五章 調(diào)試與測試…………………………………16</p><p> 第六章 總
6、結(jié)與心得 …………………………………19</p><p> 附錄: 參考文獻(xiàn)………………………………………20</p><p> 源代碼…………………………………………………21</p><p><b> 摘 要</b></p><p> 作為保障數(shù)據(jù)安全的一種方式,對于信息的加密技巧起源于歐洲,公元前2000
7、年,埃及人是最先使用象形文字作為信息編碼的人。隨著時間推移,巴比倫、美索不達(dá)米亞和希臘文明都開始使用一些方法來保護(hù)他們的書面信息(明文)。后來,被Julias Caesar(凱撒大帝)使用,也曾用于歷次戰(zhàn)爭中,包括美國獨立戰(zhàn)爭、美國內(nèi)戰(zhàn)和兩次世界大戰(zhàn)。</p><p> 最廣為人知的編碼機(jī)器是德國的German Enigma,在第二次世界大戰(zhàn)中德國人利用它創(chuàng)建了加密信息系統(tǒng),從而解決軍事信息的保密通訊問題。此后
8、,由于Alan Turing和Ultra計劃以及其他工程技術(shù)人員的不泄努力,盟軍終于對德國人的密碼成功破譯了,進(jìn)而導(dǎo)致第二次世界大戰(zhàn)結(jié)束。</p><p> 當(dāng)初,美國人對于計算機(jī)的研究,主要目的是用于破解德國人的通訊密碼,這在當(dāng)時,人們并沒有意識到計算機(jī)技術(shù)此后的發(fā)展會影響世界歷史進(jìn)程,從而在全球引發(fā)了一場信息革命。隨著計算機(jī)的發(fā)展,運算能力的增強,傳統(tǒng)的密碼知識和技能都變得十分簡單了而很容易被人破解,于是人
9、們又不斷地研究出了新的數(shù)據(jù)加密方式,如私有密鑰算法和公共密鑰算法??梢哉f,是計算機(jī)技術(shù)的飛速發(fā)展在推動了數(shù)據(jù)加密技術(shù)的發(fā)展。</p><p> 盡管加密技術(shù)被首先使用在軍事通信領(lǐng)域,但是人們或許出于安全的考慮,開始逐漸對于商業(yè)機(jī)密、政府文件等重要信息實施加密手段。數(shù)據(jù)加密應(yīng)運而生。其基本原理是:</p><p> 對明文(可讀懂的信息)進(jìn)行翻譯,使用不同的算法對明文以代碼形式(密碼)實
10、施加密。該過程的逆過程稱為解密,即將該編碼信息轉(zhuǎn)化為明文的過程。</p><p> 從事數(shù)據(jù)加密研究的人稱為密碼編碼者(Cryptographer),而從事對密碼解密的專業(yè)人士稱為密碼分析者(Cryptanalyst)。如今數(shù)據(jù)加密技術(shù)被廣泛地應(yīng)用與國民經(jīng)濟(jì)各個領(lǐng)域,特別是政府機(jī)關(guān)和國防情報部門,此外才是科學(xué)研究機(jī)關(guān)、商業(yè)部門、新聞出版、金融證券、交通管制與電力輸送等部門。</p><p&g
11、t; 而C語言程序設(shè)計教學(xué)不僅僅局限于使學(xué)生單純地了解和掌握 C 語言的基本語法規(guī)范,而是要致力于培養(yǎng)學(xué)生運用 C 語言解決實際問題的編程能力。C語言程序設(shè)計教學(xué)方法的改革讓學(xué)生從多角度、以多方式去了解和掌握 C 語言以及程序設(shè)計的精髓,著重培養(yǎng)學(xué)生無論以后在學(xué)習(xí)、工作中使用什么語言編程,都能靈活應(yīng)用這些思想和方法的能力。</p><p> 關(guān)鍵字:數(shù)據(jù)加密,數(shù)據(jù)解密,加密,解密</p><
12、;p><b> 第一章 緒 論</b></p><p> 1.1 C語言概述</p><p> C語言是國際上廣泛流行且很有發(fā)展前途的計算機(jī)高級語言,不僅用來編寫應(yīng)用軟件,也用來編寫系統(tǒng)軟件。C語言功能豐富,使用靈活,可移植性好,深受廣大用戶歡迎。C語言的數(shù)據(jù)類型豐富,既具有高級程序設(shè)計語言的優(yōu)點,又具有低級程序設(shè)計語言的特點;既可以用來編寫系統(tǒng)程序
13、,又可以用來編寫應(yīng)用程序。(例如,著名的UNIX操作系統(tǒng)就是用C語言編寫的)因此,C語言正在被迅速地推廣和普及。</p><p> 1 .2 C語言出現(xiàn)的歷史背景</p><p> 在C語言誕生以前,操作系統(tǒng)及其他系統(tǒng)軟件主要是用匯編語言實現(xiàn)的。由于匯編語言程序設(shè)計依賴于計算機(jī)硬件,其可讀性和可移植性都很差,而一般的高級語言又難以實現(xiàn)對計算機(jī)硬件的直接操作,因此人們需要一種兼有匯編語
14、言和高級語言特性的語言。C語言就是在這種環(huán)境下產(chǎn)生的。它最早是由Dennis Richie于1973年設(shè)計并實現(xiàn)。它的產(chǎn)生同UNIX系統(tǒng)之間具有非常密切的聯(lián)系——C語言是在UNIX系統(tǒng)上開發(fā)的。而無論UNIX系統(tǒng)本身還是其上運行的大部分程序,都是用C語言編寫實現(xiàn)。同時,它同樣適合于編寫不同領(lǐng)域中的大多數(shù)程序。</p><p> C語言已經(jīng)成為全球程序員的公共語言,并且由此產(chǎn)生了當(dāng)前兩個主流的語言C++和Java
15、——它們都建立在C語言的語法和基本結(jié)構(gòu)的基礎(chǔ)上,而且現(xiàn)在世界上的許多軟件都是在C語言及其衍生的各種語言的基礎(chǔ)上開發(fā)而成。</p><p> 目前,在微機(jī)上廣泛使用的C語言編譯系統(tǒng)有Turbo C、Borland C++、Microsoft Visual C++等。雖然它們的基本部分都是相同的,但還是有一些差異,本程序的設(shè)計采用Turbo C作為上機(jī)編程調(diào)試環(huán)境。</p><p> 第二
16、章 開發(fā)環(huán)境及相關(guān)技術(shù)的介紹</p><p> 2 .1 開發(fā)環(huán)境的介紹</p><p> 在C語言誕生以前,操作系統(tǒng)及其他系統(tǒng)軟件主要是用匯編語言實現(xiàn)的。由于匯編語言程序設(shè)計依賴于計算機(jī)硬件,其可讀性和可移植性都很差,而一般的高級語言又難以實現(xiàn)對計算機(jī)硬件的直接操作,因此人們需要一種兼有匯編語言和高級語言特性的語言。C語言就是在這種環(huán)境下產(chǎn)生的。它最早是由Dennis Richie
17、于1973年設(shè)計并實現(xiàn)。它的產(chǎn)生同UNIX系統(tǒng)之間具有非常密切的聯(lián)系——C語言是在UNIX系統(tǒng)上開發(fā)的。而無論UNIX系統(tǒng)本身還是其上運行的大部分程序,都是用C語言編寫實現(xiàn)。同時,它同樣適合于編寫不同領(lǐng)域中的大多數(shù)程序。</p><p> C語言已經(jīng)成為全球程序員的公共語言,并且由此產(chǎn)生了當(dāng)前兩個主流的語言C++和Java——它們都建立在C語言的語法和基本結(jié)構(gòu)的基礎(chǔ)上,而且現(xiàn)在世界上的許多軟件都是在C語言及其衍
18、生的各種語言的基礎(chǔ)上開發(fā)而成。</p><p> 目前,在微機(jī)上廣泛使用的C語言編譯系統(tǒng)有Turbo C、Borland C++、Microsoft Visual C++等。雖然它們的基本部分都是相同的,但還是有一些差異,本程序的設(shè)計采用Turbo C作為上機(jī)編程調(diào)試環(huán)境。</p><p> 2 .2 有關(guān)開發(fā)環(huán)境的技術(shù)</p><p><b>
19、C語言的特點:</b></p><p> 1. 簡潔緊湊,靈活方便</p><p> C語言一共只有32個關(guān)鍵字,9種控制語句,程序書寫自由,主要用小寫字母表示.它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來. C 語言可以象匯編語言一樣對位,字節(jié)和地址進(jìn)行操作, 而這三者是計算機(jī)最基本的工作單元.</p><p><b> 2.
20、 運算符豐富 </b></p><p> C的運算符包含的范圍很廣泛,共有種34個運算符.C語言把括號,賦值,強制類型轉(zhuǎn)換等都作為運算符處理.從而使C的運算類型極其豐富表達(dá)式類型多樣化,靈活使用各種運算符可以實現(xiàn)在其它高級語言中難以實現(xiàn)的運算.</p><p><b> 3. 數(shù)據(jù)結(jié)構(gòu)豐富</b></p><p> C的數(shù)據(jù)類
21、型有:整型,實型,字符型,數(shù)組類型,指針類型,結(jié)構(gòu)體類型,共用體類型等.能用來實現(xiàn)各種復(fù)雜的數(shù)據(jù)類型的運算.并引入了指針概念,使程序效率更高.另外C語言具有強大的圖形功能, 支持多種顯示器和驅(qū)動器.且計算功能,邏輯判斷功能強大. </p><p> 4. C是結(jié)構(gòu)式語言</p><p> 結(jié)構(gòu)式語言的顯著特點是代碼及數(shù)據(jù)的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立.這種結(jié)構(gòu)化
22、方式可使程序?qū)哟吻逦? 便于使用,維護(hù)以及調(diào)試.C語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán),條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化. </p><p> 5. C語法限制不太嚴(yán)格,程序設(shè)計自由度大 </p><p> 一般的高級語言語法檢查比較嚴(yán),能夠檢查出幾乎所有的語法錯誤.而C語言允許程序編寫者有較大的自由度.</p><p>
23、 6. C語言允許直接訪問物理地址,可以直接對硬件進(jìn)行操作</p><p> 因此既具有高級語言的功能,又具有低級語言的許多功能,能夠像匯編語言一樣對位,字節(jié)和地址進(jìn)行操作,而這三者是計算機(jī)最基本的工作單元,可以用來寫系統(tǒng)軟件. </p><p> 7. C語言程序生成代碼質(zhì)量高,程序執(zhí)行效率高 </p><p> 一般只比匯編程序生成的目標(biāo)代碼效率低10へ
24、20%.</p><p> 8. C語言適用范圍大,可移植性好</p><p> C語言有一個突出的優(yōu)點就是適合于多種操作系統(tǒng), 如DOS,UNIX,也適用于多種機(jī)型.</p><p> C#和.NET平臺的概貌</p><p><b> C語言的缺點:</b></p><p> 1.
25、C語言的缺點主要是表現(xiàn)在數(shù)據(jù)的封裝性上,這一點使得C語言在數(shù)據(jù)的安全性上做的有很大缺陷,這也是C和C++的一大區(qū)別。 2. C語言的語法限制不太嚴(yán)格,對變量的類型約束不嚴(yán)格,影響程序的安全性,對數(shù)組下標(biāo)越界不作檢查等。從應(yīng)用的角度,C語言比其他高級語言較難掌握。</p><p> 第三章 總體設(shè)計與詳細(xì)設(shè)計</p><p> 3 .1 本程序解決的有關(guān)技術(shù)問題</p&g
26、t;<p> 本程序是一款小型的數(shù)據(jù)加密解密軟件。數(shù)據(jù)加密是計算機(jī)網(wǎng)絡(luò)安全很重要的一個部分。由于因特網(wǎng)身的不安全性,我們不僅對口令進(jìn)行加密,有時也對在網(wǎng)上傳輸?shù)奈募M(jìn)行加密。為了保證電子郵件的安全,人們采用了數(shù)字簽名這樣的加密技術(shù),并提供基于加密的身份認(rèn)證技術(shù)。數(shù)據(jù)加密也使電子商務(wù)成為可能。</p><p><b> 一、密碼技術(shù)</b></p><p&
27、gt; 密碼學(xué)是保密學(xué)的一部分。保密學(xué)是研究密碼系統(tǒng)或通信安全的科學(xué),它包括兩個分支:密碼學(xué)和密碼分析學(xué)。密碼學(xué)是對信息進(jìn)行編碼實現(xiàn)隱蔽信息的一門學(xué)問。密碼分析學(xué)是研究分析破譯密碼的學(xué)問。兩者相互獨立,而又相互促進(jìn),正如病毒與反病毒技術(shù)一樣。</p><p> 采用密碼技術(shù)可以隱藏和保護(hù)需要保密的消息,使未授權(quán)者不能提取信息。需要隱藏的消息稱為明文。明文被變換成另一種隱藏形式就稱為密文。這種變換稱為加密。加密
28、的逆過程,即從密文恢復(fù)出明文的過程稱為解密。對明文進(jìn)行加密時采用的一組規(guī)則稱為加密算法。對密文解密時采用的一組規(guī)則稱為解密算法。加密算法和解密算法通常都是在一組密鑰控制下進(jìn)行的,密鑰決定了從明文到密文的映射,加密算法所使用的密鑰稱為加密密鑰,解密算法所使用的密鑰稱為解密密鑰。</p><p><b> 二、密碼體制分類</b></p><p> 密碼體制通常從三個
29、獨立的方面進(jìn)行分類:</p><p> ?。?)按明文到密文的轉(zhuǎn)換操作可分為:置換密碼和易位密碼。</p><p> 所有加密算法都是建立在兩個通用原則之上:置換和易位。</p><p> (2)按明文的處理方法可分為:分組密碼和序列密碼。</p><p> ?。?)按密鑰使用個數(shù)可分:對稱密碼體制,非對稱密碼體制。</p>
30、<p> 置換密碼:是將明文的每個元素(比特、字母、比特或字母的組合)映射到其他元素。</p><p> 易位密碼:是對明文的元素進(jìn)行重新布置。</p><p> 分組密碼:的加密方式是首先將明文序列以固定長度進(jìn)行分組,每一組明文用相同的密鑰和加密函數(shù)進(jìn)行運算。 分組密碼設(shè)計的核心上構(gòu)造既具有可逆性又有很強的線性的算法。 </p><p> 序列
31、密碼:的加密過程是將報文,話音,圖象,數(shù)據(jù)等原始信息轉(zhuǎn)化成明文數(shù)據(jù)序列,然后將它同密鑰序列進(jìn)行異或運算。生成密文序列發(fā)送給接受者。</p><p> 對稱密碼體制:如果發(fā)送方使用的加密密鑰和接受方使用的解密密鑰相同,或從其中一個密鑰易于的出另一個密鑰,這樣的系統(tǒng)叫做對稱的,但密鑰或常規(guī)加密系統(tǒng)。</p><p> 非對稱密碼體制:如果發(fā)送方使用的加密密鑰和接受方使用的解密密鑰不相同,從
32、其中一個密鑰難以推出另一個密鑰,這樣的系統(tǒng)就叫做不對稱的,雙密鑰或公鑰加密系統(tǒng)。</p><p> 三、數(shù)據(jù)加密技術(shù)分類</p><p><b> (1)對稱型加密,</b></p><p><b> (2)不對稱型加密</b></p><p><b> ?。?)不可逆加密。<
33、/b></p><p> 對稱加密:使用單個密鑰對數(shù)據(jù)進(jìn)行加密或解密。 </p><p> 不對稱加密:算法也稱為公開加密算法,其特點是有兩個密鑰,只有兩者搭配使用才能完成加密和解密的全過程。 </p><p> 不可逆加密算法:特征是加密過程不需要密鑰,并且經(jīng)過加密的數(shù)據(jù)無法被解密,只有同樣輸入的輸入數(shù)據(jù)經(jīng)過同樣的不可逆算法才能得到同樣的加密數(shù)據(jù)。 &
34、lt;/p><p> 從通信網(wǎng)絡(luò)的傳輸方面,數(shù)據(jù)加密技術(shù)可以分為3類:</p><p> (1)鏈路加密方式,</p><p> ?。?)節(jié)點到節(jié)點方式</p><p> ?。?)端到端方式。 </p><p> 鏈路加密方式:是一般網(wǎng)絡(luò)通信安全主要采用的方式。 </p><p> 節(jié)點到節(jié)
35、點加密方式:是為了解決在節(jié)點中數(shù)據(jù)是明文的缺點,在中間節(jié)點里裝有加,解密的保護(hù)裝置,由這個裝置來完成一個密鑰向另一個密鑰的變換。 </p><p> 端到端方式:在端到端機(jī)密方式中,由發(fā)送方加密的數(shù)據(jù)在沒有到達(dá)最終目的節(jié)點之前是不被解密的。</p><p><b> 四、密碼分析 </b></p><p> 試圖發(fā)現(xiàn)明文或密鑰的過程叫做密
36、碼分析。也就是同常所說的密碼破譯。密碼分析人員使用的策略取決于加密方案的特性和分析人員可用信息。</p><p> 密碼分析過程通常包括:分析、假設(shè)、推斷和證實等步驟。 </p><p> ?。ㄏ卤頌楦鞣N加密消息破譯類型)</p><p><b> 加密消息破譯類型</b></p><p> 尋找密鑰所需的平均時間
37、</p><p> 3 .2 本程序流程圖</p><p><b> 第四章 編碼實現(xiàn)</b></p><p> 4 .1 程序的總體設(shè)計與使用方法</p><p> 本程序是針對數(shù)據(jù)加密解密技術(shù)設(shè)計的一款數(shù)據(jù)加密解密軟件,它能對用戶的密碼進(jìn)行算法邏輯上的加密。運行程序后,用戶會看到一給非常友好的界面菜單,有
38、3個選項可供選擇。第一個是數(shù)據(jù)加密,第二個是數(shù)據(jù)解密,第三個是退出。這時,系統(tǒng)會提示用戶去做選擇。</p><p> Turbo C上顯示的主菜單界面(這里是漢文實際英文)</p><p> ======================================================== </p><p> 歡迎使用數(shù)據(jù)加密解密軟件 ====
39、====================================================</p><p><b> 1.進(jìn)行數(shù)據(jù)加密 </b></p><p> 2.進(jìn)行數(shù)據(jù)解密 </p><p><b> 3.退出</b></p><p> 請選擇1—3 進(jìn)行操作<
40、/p><p> ========================================================</p><p> 當(dāng)用戶選擇第一個數(shù)據(jù)加密時,系統(tǒng)會提示用戶輸入小于16位的明文密碼,用戶把想要轉(zhuǎn)換成密文的密碼輸入,按回車結(jié)束。這時,系統(tǒng)會透過自身的密鑰加密算法自動將轉(zhuǎn)換好的密文告訴用戶,用戶可以牢牢地記住,也可以選擇把它記到紙上。按任意鍵可返回主菜單。&l
41、t;/p><p><b> 進(jìn)入數(shù)據(jù)加密界面:</b></p><p> 請輸入16位以下明文:</p><p><b> XXXXXX→明文</b></p><p><b> 數(shù)據(jù)加密后的密文:</b></p><p><b> XXX
42、XXX→密文</b></p><p> 按任意鍵返回主菜單!</p><p> 當(dāng)用戶選擇第二個數(shù)據(jù)解密時,系統(tǒng)會提示用戶輸入小于16位的密文,此次輸入的是用戶剛剛通過本程序加密后得到的密文,而不再是用戶自己的密碼,是把它輸入進(jìn)去后,系統(tǒng)會通過自身的密鑰解密算法自動將轉(zhuǎn)換好的明文告訴用戶,用戶可以自行驗證。</p><p><b> 進(jìn)入
43、數(shù)據(jù)解密界面:</b></p><p> 請輸入16位以下密文:</p><p><b> XXXXXX→密文</b></p><p><b> 數(shù)據(jù)解密后的明文:</b></p><p><b> XXXXXX→明文</b></p><
44、p><b> 按任意鍵返回主菜單</b></p><p> 當(dāng)用戶選擇第三個退出時,退出本程序。(程序的關(guān)鍵在于密鑰)</p><p> 4 .2 實現(xiàn)本程序的關(guān)鍵C技術(shù)</p><p> 本程序主要運用的系統(tǒng)函數(shù):</p><p><b> gotoxy</b></p>
45、;<p> 函數(shù)功能:將光標(biāo)移動到指定位置說明,Y行和X列;gotoxy(0,0)將光標(biāo)移動到屏幕左上角。</p><p><b> main()</b></p><p> { int x=13,y=7;</p><p><b> ……</b></p><p> gotoxy
46、(x,y);</p><p> puts("……");</p><p> gotoxy(x,y+1);</p><p> printf("……");</p><p> gotoxy(x,y+2);</p><p><b> ……</b></p
47、><p><b> }</b></p><p> 此程序段運用gotoxy函數(shù)實現(xiàn)一個位于屏幕中央的菜單界面。</p><p> 下面的就是加密與解密技術(shù)</p><p><b> Encrypt()</b></p><p><b> {</b>&
48、lt;/p><p> char sec[N],c;</p><p> int i,lg,f1,f2,f3;</p><p> f1=f2=1;f3=f1+f2;</p><p><b> ……</b></p><p> scanf("%s",sec);</p>
49、<p> lg=strlen(sec);</p><p> for(i=0;i<lg/2;i++)</p><p><b> {</b></p><p><b> c=sec[i];</b></p><p> sec[i]=sec[lg-i-1];</p>
50、<p> sec[lg-i-1]=c;</p><p><b> }</b></p><p> for(i=0;i<lg;i++)</p><p><b> {</b></p><p><b> c=sec[i];</b></p>&l
51、t;p> sec[i]=(char)((int)c+i+1);</p><p><b> if(i<4)</b></p><p> sec[i]^=f1;</p><p><b> else</b></p><p><b> {</b></p>
52、<p> sec[i]^=f3;</p><p><b> f1=f2;</b></p><p><b> f2=f3;</b></p><p><b> f3=f1+f2;</b></p><p><b> }</b></p
53、><p><b> }</b></p><p><b> ……</b></p><p><b> }</b></p><p> Deciphering()</p><p><b> {</b></p><p
54、> char sec[N],c;</p><p> int i,lg,f1,f2,f3;</p><p> f1=f2=1;f3=f1+f2;</p><p><b> ……</b></p><p> scanf("%s",sec);</p><p> lg=
55、strlen(sec);</p><p> for(i=0;i<lg;i++)</p><p><b> {</b></p><p><b> if(i<4)</b></p><p> sec[i]^=f1;</p><p><b> else
56、</b></p><p><b> {</b></p><p> sec[i]^=f3;</p><p><b> f1=f2;</b></p><p><b> f2=f3;</b></p><p><b> f3=f1
57、+f2;</b></p><p><b> }</b></p><p><b> c=sec[i];</b></p><p> sec[i]=(char)((int)c-i-1);</p><p><b> }</b></p><p>
58、; for(i=0;i<lg/2;i++)</p><p><b> {</b></p><p><b> c=sec[i];</b></p><p> sec[i]=sec[lg-i-1];</p><p> sec[lg-i-1]=c;</p><p>&
59、lt;b> }</b></p><p><b> ……</b></p><p><b> }</b></p><p><b> 第五章 調(diào)試與測試</b></p><p> 1.程序運行后,會出現(xiàn)一個友好的界面,供用戶選擇。</p>&
60、lt;p> 2.當(dāng)用戶輸入1要進(jìn)行數(shù)據(jù)加密時,顯示的界面,程序會提示用戶輸入字符并且不要超過16個。</p><p> 3.當(dāng)用戶輸入需要加密的明文后,經(jīng)過內(nèi)置的算法,程序會把其對應(yīng)的密文告訴用戶。</p><p> 4.當(dāng)用戶選擇2數(shù)據(jù)解密時出現(xiàn)的界面,程序會提示用戶輸入需要解密的密文并且不要超過16個。</p><p> 5.當(dāng)用戶輸入需要解密的密
61、文后,經(jīng)過內(nèi)置的算法,程序會把解密后其對應(yīng)的明文告訴用戶。</p><p><b> 第六章 總結(jié)與心得</b></p><p> 課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,當(dāng)今計算機(jī)應(yīng)用在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌
62、握計算機(jī)開發(fā)技術(shù)是十分重要的。</p><p> 這是一款數(shù)據(jù)加密解密軟件,它能對你的密碼進(jìn)行加密。有的時候,在我們輸入密碼時,很容易被別人看到,就算是看不到,都用星號來代替它們,盜密碼者也能通過一些手段,將其破譯。我就有過這樣一段經(jīng)歷。我比較喜歡上網(wǎng),在網(wǎng)吧輸入QQ號和QQ密碼不久,就提示我我的QQ號在其他地方已經(jīng)登陸,這讓我百思不得其解,不過我現(xiàn)在明白了,也許QQ這款軟件給我的密碼加密了,不過被盜密碼者給破
63、譯了,也許QQ它根本就沒有給我的密碼加密被盜密碼這監(jiān)聽到了??傊?,我的密碼是泄露了。那一次讓我損失了不少,也讓我明白了數(shù)據(jù)加密的道理。今天,借著這個課程設(shè)計的機(jī)會,我親自做一款數(shù)據(jù)加密解密的小軟件,小程序,我知道雖然我的小軟件現(xiàn)在任何場所任何地方都派不上用場,不過我相信,總有一天會的!</p><p> 回顧起此次課程設(shè)計,至今我仍感慨頗多,的確,從拿到題目到完成整個編程,從理論到實踐,在整整半個學(xué)期的日子里,
64、可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所
65、學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體……通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。</p><p> 這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多編程問題,最后在老師的辛勤指導(dǎo)下,終于游逆而解。同時,在老師的身上我學(xué)得到很多實用的知識,在次我表示感謝!同時,對給過我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次表示忠心的感謝!</p><p><b> 附
66、 錄:參考文獻(xiàn)</b></p><p> 1.全國計算機(jī)登記考試二級教程—C預(yù)言程序設(shè)計 高等教育出版社 田樹青</p><p> 2.C程序設(shè)計(第三版) 清華大學(xué)出版社 譚浩強</p><p> 3.C語言程序設(shè)計 清華大學(xué)出版社 郭有強</p><p><b> 附 錄:源代碼</b><
67、/p><p> #include<stdio.h></p><p> #include<stdlib.h></p><p> #define N 16</p><p><b> main()</b></p><p><b> {</b></
68、p><p> int x=13,y=7;</p><p> char choice;</p><p> randomize();</p><p><b> while(1)</b></p><p><b> {</b></p><p><b
69、> clrscr();</b></p><p> gotoxy(x,y);</p><p> puts("============================================");</p><p> gotoxy(x,y+1);</p><p> printf("W
70、elcome to useing data encryption deciphering software");</p><p> gotoxy(x,y+2);</p><p> puts("=============================================");</p><p> gotoxy(x,y+3
71、);</p><p> puts("1.Carry out the data encryption");</p><p> gotoxy(x,y+4);</p><p> puts("2.Carry out the data deciphering.");</p><p> gotoxy(x,y
72、+5);</p><p> puts("3.Exit.");</p><p> gotoxy(x,y+7);</p><p> puts("Choose operation please 1 to 3......");</p><p> gotoxy(x,y+9);</p><
73、;p> puts("=============================================");</p><p> choice=getch();</p><p> switch(choice)</p><p><b> {</b></p><p> case
74、39;1':Encrypt();break;</p><p> case '2':Deciphering();break;</p><p> case '3':exit(0);break;</p><p> default:printf("Choose a mistake! Note the key impor
75、ts arbitrarily again......");</p><p><b> getch();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p&
76、gt;<p><b> Encrypt()</b></p><p><b> {</b></p><p> char sec[N],c;</p><p> int i,lg,f1,f2,f3;</p><p> f1=f2=1;f3=f1+f2;</p><
77、;p><b> clrscr();</b></p><p> printf("Please import not encryption 16 data please!\n");</p><p> scanf("%s",sec);</p><p> lg=strlen(sec);</p&
78、gt;<p> for(i=0;i<lg/2;i++)</p><p><b> {</b></p><p><b> c=sec[i];</b></p><p> sec[i]=sec[lg-i-1];</p><p> sec[lg-i-1]=c;</p>
79、;<p><b> }</b></p><p> for(i=0;i<lg;i++)</p><p><b> {</b></p><p><b> c=sec[i];</b></p><p> sec[i]=(char)((int)c+i+1);
80、</p><p><b> if(i<4)</b></p><p> sec[i]^=f1;</p><p><b> else</b></p><p><b> {</b></p><p> sec[i]^=f3;</p>
81、<p><b> f1=f2;</b></p><p><b> f2=f3;</b></p><p><b> f3=f1+f2;</b></p><p><b> }</b></p><p><b> }</b&g
82、t;</p><p> printf("Proclaimed in writing of the data encryption queen is:\n");</p><p> for(i=0;i<lg;i++)</p><p><b> {</b></p><p> printf(&q
83、uot;%c",sec[i]);</p><p><b> }</b></p><p> getchar();</p><p> printf("\nNote the key imports arbitrarily again......\n");</p><p><b>
84、 getch();</b></p><p><b> }</b></p><p> Deciphering()</p><p><b> {</b></p><p> char sec[N],c;</p><p> int i,lg,f1,f2,f3;&
85、lt;/p><p> f1=f2=1;f3=f1+f2;</p><p><b> clrscr();</b></p><p> printf("Please import 16 data encrypting the queen!\n");</p><p> scanf("%s&quo
86、t;,sec);</p><p> lg=strlen(sec);</p><p> for(i=0;i<lg;i++)</p><p><b> {</b></p><p><b> if(i<4)</b></p><p> sec[i]^=f1;&l
87、t;/p><p><b> else</b></p><p><b> {</b></p><p> sec[i]^=f3;</p><p><b> f1=f2;</b></p><p><b> f2=f3;</b><
88、;/p><p><b> f3=f1+f2;</b></p><p><b> }</b></p><p><b> c=sec[i];</b></p><p> sec[i]=(char)((int)c-i-1);</p><p><b>
89、; }</b></p><p> for(i=0;i<lg/2;i++)</p><p><b> {</b></p><p><b> c=sec[i];</b></p><p> sec[i]=sec[lg-i-1];</p><p> se
90、c[lg-i-1]=c;</p><p><b> }</b></p><p> printf("Proclaimed in writing of the data deciphering queen is:\n");</p><p> for(i=0;i<lg;i++)</p><p>
91、<b> {</b></p><p> printf("%c",sec[i]);</p><p><b> }</b></p><p> getchar();</p><p> printf("\nNote the key imports arbitraril
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《c語言課程設(shè)計》課程設(shè)計--數(shù)據(jù)的加密與解密
- c語言課程設(shè)計-文件加密解密
- c語言課程設(shè)計-文件加密解密
- c語言課程設(shè)計數(shù)據(jù)的加密與解密
- c語言課程設(shè)計-文件加密解密(含源代碼)
- 加密與解密課程設(shè)計
- java課程設(shè)計--加密與解密
- java課程設(shè)計---加密和解密
- java文件加密解密課程設(shè)計
- 加密解密程序設(shè)計課程設(shè)計
- aes密碼學(xué)課程設(shè)計(c語言實現(xiàn))--aes加密解密軟件的實現(xiàn)
- java課程設(shè)計 -- 文件加密與解密
- 文件加密與解密—java課程設(shè)計報告
- 微機(jī)原理課程設(shè)計--加密解密程序設(shè)計
- c語言課程設(shè)計--數(shù)據(jù)集合處理
- aes課程設(shè)計報告--aes加密解密的實現(xiàn)
- 操作系統(tǒng)課程設(shè)計報告--加密與解密
- 【課程設(shè)計】c語言課程設(shè)計
- c語言課程設(shè)計
- c語言課程設(shè)計
評論
0/150
提交評論