c語言課程設計—數據加密解密_第1頁
已閱讀1頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  《C語言程序》課程設計報告書</p><p>  設計題目: 數據加密解密 </p><p>  專業(yè): 班級: </p><p>  學生姓名: 學號: </p><p>  指導教師:

2、 </p><p><b>  2010年06月</b></p><p><b>  信息工程學院</b></p><p><b>  目 錄</b></p><p>  摘 要 ……………………………………………………2</p><p>  第一章

3、 緒 論 …………………………………………3</p><p>  1 .1 C語言概述 …………………………………………3</p><p>  1 .2 C語言出現的歷史背景 ………………………………3</p><p>  第二章 開發(fā)環(huán)境及相關技術的介紹…………………4</p><p>  2 .1 開發(fā)環(huán)境的介紹 ………………………

4、……………4</p><p>  2 .2 有關開發(fā)環(huán)境的技術 ………………………………4</p><p>  第三章 總體設計與詳細設計…………………………6</p><p>  3 .1 本程序解決的有關技術問題 …………………………6</p><p>  3 .2 本程序流程圖………………………………………9</p>

5、<p>  第四章 編碼實現……………………………………12</p><p>  4 .1 程序的總體實現與使用方法…………………………12</p><p>  4 .2 實現本程序的關鍵C技術 …………………………13</p><p>  第五章 調試與測試…………………………………16</p><p>  第六章 總

6、結與心得 …………………………………19</p><p>  附錄: 參考文獻………………………………………20</p><p>  源代碼…………………………………………………21</p><p><b>  摘 要</b></p><p>  作為保障數據安全的一種方式,對于信息的加密技巧起源于歐洲,公元前2000

7、年,埃及人是最先使用象形文字作為信息編碼的人。隨著時間推移,巴比倫、美索不達米亞和希臘文明都開始使用一些方法來保護他們的書面信息(明文)。后來,被Julias Caesar(凱撒大帝)使用,也曾用于歷次戰(zhàn)爭中,包括美國獨立戰(zhàn)爭、美國內戰(zhàn)和兩次世界大戰(zhàn)。</p><p>  最廣為人知的編碼機器是德國的German Enigma,在第二次世界大戰(zhàn)中德國人利用它創(chuàng)建了加密信息系統,從而解決軍事信息的保密通訊問題。此后

8、,由于Alan Turing和Ultra計劃以及其他工程技術人員的不泄努力,盟軍終于對德國人的密碼成功破譯了,進而導致第二次世界大戰(zhàn)結束。</p><p>  當初,美國人對于計算機的研究,主要目的是用于破解德國人的通訊密碼,這在當時,人們并沒有意識到計算機技術此后的發(fā)展會影響世界歷史進程,從而在全球引發(fā)了一場信息革命。隨著計算機的發(fā)展,運算能力的增強,傳統的密碼知識和技能都變得十分簡單了而很容易被人破解,于是人

9、們又不斷地研究出了新的數據加密方式,如私有密鑰算法和公共密鑰算法??梢哉f,是計算機技術的飛速發(fā)展在推動了數據加密技術的發(fā)展。</p><p>  盡管加密技術被首先使用在軍事通信領域,但是人們或許出于安全的考慮,開始逐漸對于商業(yè)機密、政府文件等重要信息實施加密手段。數據加密應運而生。其基本原理是:</p><p>  對明文(可讀懂的信息)進行翻譯,使用不同的算法對明文以代碼形式(密碼)實

10、施加密。該過程的逆過程稱為解密,即將該編碼信息轉化為明文的過程。</p><p>  從事數據加密研究的人稱為密碼編碼者(Cryptographer),而從事對密碼解密的專業(yè)人士稱為密碼分析者(Cryptanalyst)。如今數據加密技術被廣泛地應用與國民經濟各個領域,特別是政府機關和國防情報部門,此外才是科學研究機關、商業(yè)部門、新聞出版、金融證券、交通管制與電力輸送等部門。</p><p&g

11、t;  而C語言程序設計教學不僅僅局限于使學生單純地了解和掌握 C 語言的基本語法規(guī)范,而是要致力于培養(yǎng)學生運用 C 語言解決實際問題的編程能力。C語言程序設計教學方法的改革讓學生從多角度、以多方式去了解和掌握 C 語言以及程序設計的精髓,著重培養(yǎng)學生無論以后在學習、工作中使用什么語言編程,都能靈活應用這些思想和方法的能力。</p><p>  關鍵字:數據加密,數據解密,加密,解密</p><

12、;p><b>  第一章 緒 論</b></p><p>  1.1 C語言概述</p><p>  C語言是國際上廣泛流行且很有發(fā)展前途的計算機高級語言,不僅用來編寫應用軟件,也用來編寫系統軟件。C語言功能豐富,使用靈活,可移植性好,深受廣大用戶歡迎。C語言的數據類型豐富,既具有高級程序設計語言的優(yōu)點,又具有低級程序設計語言的特點;既可以用來編寫系統程序

13、,又可以用來編寫應用程序。(例如,著名的UNIX操作系統就是用C語言編寫的)因此,C語言正在被迅速地推廣和普及。</p><p>  1 .2 C語言出現的歷史背景</p><p>  在C語言誕生以前,操作系統及其他系統軟件主要是用匯編語言實現的。由于匯編語言程序設計依賴于計算機硬件,其可讀性和可移植性都很差,而一般的高級語言又難以實現對計算機硬件的直接操作,因此人們需要一種兼有匯編語

14、言和高級語言特性的語言。C語言就是在這種環(huán)境下產生的。它最早是由Dennis Richie于1973年設計并實現。它的產生同UNIX系統之間具有非常密切的聯系——C語言是在UNIX系統上開發(fā)的。而無論UNIX系統本身還是其上運行的大部分程序,都是用C語言編寫實現。同時,它同樣適合于編寫不同領域中的大多數程序。</p><p>  C語言已經成為全球程序員的公共語言,并且由此產生了當前兩個主流的語言C++和Java

15、——它們都建立在C語言的語法和基本結構的基礎上,而且現在世界上的許多軟件都是在C語言及其衍生的各種語言的基礎上開發(fā)而成。</p><p>  目前,在微機上廣泛使用的C語言編譯系統有Turbo C、Borland C++、Microsoft Visual C++等。雖然它們的基本部分都是相同的,但還是有一些差異,本程序的設計采用Turbo C作為上機編程調試環(huán)境。</p><p>  第二

16、章 開發(fā)環(huán)境及相關技術的介紹</p><p>  2 .1 開發(fā)環(huán)境的介紹</p><p>  在C語言誕生以前,操作系統及其他系統軟件主要是用匯編語言實現的。由于匯編語言程序設計依賴于計算機硬件,其可讀性和可移植性都很差,而一般的高級語言又難以實現對計算機硬件的直接操作,因此人們需要一種兼有匯編語言和高級語言特性的語言。C語言就是在這種環(huán)境下產生的。它最早是由Dennis Richie

17、于1973年設計并實現。它的產生同UNIX系統之間具有非常密切的聯系——C語言是在UNIX系統上開發(fā)的。而無論UNIX系統本身還是其上運行的大部分程序,都是用C語言編寫實現。同時,它同樣適合于編寫不同領域中的大多數程序。</p><p>  C語言已經成為全球程序員的公共語言,并且由此產生了當前兩個主流的語言C++和Java——它們都建立在C語言的語法和基本結構的基礎上,而且現在世界上的許多軟件都是在C語言及其衍

18、生的各種語言的基礎上開發(fā)而成。</p><p>  目前,在微機上廣泛使用的C語言編譯系統有Turbo C、Borland C++、Microsoft Visual C++等。雖然它們的基本部分都是相同的,但還是有一些差異,本程序的設計采用Turbo C作為上機編程調試環(huán)境。</p><p>  2 .2 有關開發(fā)環(huán)境的技術</p><p><b>  

19、C語言的特點:</b></p><p>  1. 簡潔緊湊,靈活方便</p><p>  C語言一共只有32個關鍵字,9種控制語句,程序書寫自由,主要用小寫字母表示.它把高級語言的基本結構和語句與低級語言的實用性結合起來. C 語言可以象匯編語言一樣對位,字節(jié)和地址進行操作, 而這三者是計算機最基本的工作單元.</p><p><b>  2.

20、 運算符豐富 </b></p><p>  C的運算符包含的范圍很廣泛,共有種34個運算符.C語言把括號,賦值,強制類型轉換等都作為運算符處理.從而使C的運算類型極其豐富表達式類型多樣化,靈活使用各種運算符可以實現在其它高級語言中難以實現的運算.</p><p><b>  3. 數據結構豐富</b></p><p>  C的數據類

21、型有:整型,實型,字符型,數組類型,指針類型,結構體類型,共用體類型等.能用來實現各種復雜的數據類型的運算.并引入了指針概念,使程序效率更高.另外C語言具有強大的圖形功能, 支持多種顯示器和驅動器.且計算功能,邏輯判斷功能強大. </p><p>  4. C是結構式語言</p><p>  結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立.這種結構化

22、方式可使程序層次清晰, 便于使用,維護以及調試.C語言是以函數形式提供給用戶的,這些函數可方便的調用,并具有多種循環(huán),條件語句控制程序流向,從而使程序完全結構化. </p><p>  5. C語法限制不太嚴格,程序設計自由度大 </p><p>  一般的高級語言語法檢查比較嚴,能夠檢查出幾乎所有的語法錯誤.而C語言允許程序編寫者有較大的自由度.</p><p>

23、  6. C語言允許直接訪問物理地址,可以直接對硬件進行操作</p><p>  因此既具有高級語言的功能,又具有低級語言的許多功能,能夠像匯編語言一樣對位,字節(jié)和地址進行操作,而這三者是計算機最基本的工作單元,可以用來寫系統軟件. </p><p>  7. C語言程序生成代碼質量高,程序執(zhí)行效率高 </p><p>  一般只比匯編程序生成的目標代碼效率低10へ

24、20%.</p><p>  8. C語言適用范圍大,可移植性好</p><p>  C語言有一個突出的優(yōu)點就是適合于多種操作系統, 如DOS,UNIX,也適用于多種機型.</p><p>  C#和.NET平臺的概貌</p><p><b>  C語言的缺點:</b></p><p>  1.

25、C語言的缺點主要是表現在數據的封裝性上,這一點使得C語言在數據的安全性上做的有很大缺陷,這也是C和C++的一大區(qū)別。 2. C語言的語法限制不太嚴格,對變量的類型約束不嚴格,影響程序的安全性,對數組下標越界不作檢查等。從應用的角度,C語言比其他高級語言較難掌握。</p><p>  第三章 總體設計與詳細設計</p><p>  3 .1 本程序解決的有關技術問題</p&g

26、t;<p>  本程序是一款小型的數據加密解密軟件。數據加密是計算機網絡安全很重要的一個部分。由于因特網身的不安全性,我們不僅對口令進行加密,有時也對在網上傳輸的文件進行加密。為了保證電子郵件的安全,人們采用了數字簽名這樣的加密技術,并提供基于加密的身份認證技術。數據加密也使電子商務成為可能。</p><p><b>  一、密碼技術</b></p><p&

27、gt;  密碼學是保密學的一部分。保密學是研究密碼系統或通信安全的科學,它包括兩個分支:密碼學和密碼分析學。密碼學是對信息進行編碼實現隱蔽信息的一門學問。密碼分析學是研究分析破譯密碼的學問。兩者相互獨立,而又相互促進,正如病毒與反病毒技術一樣。</p><p>  采用密碼技術可以隱藏和保護需要保密的消息,使未授權者不能提取信息。需要隱藏的消息稱為明文。明文被變換成另一種隱藏形式就稱為密文。這種變換稱為加密。加密

28、的逆過程,即從密文恢復出明文的過程稱為解密。對明文進行加密時采用的一組規(guī)則稱為加密算法。對密文解密時采用的一組規(guī)則稱為解密算法。加密算法和解密算法通常都是在一組密鑰控制下進行的,密鑰決定了從明文到密文的映射,加密算法所使用的密鑰稱為加密密鑰,解密算法所使用的密鑰稱為解密密鑰。</p><p><b>  二、密碼體制分類</b></p><p>  密碼體制通常從三個

29、獨立的方面進行分類:</p><p>  (1)按明文到密文的轉換操作可分為:置換密碼和易位密碼。</p><p>  所有加密算法都是建立在兩個通用原則之上:置換和易位。</p><p> ?。?)按明文的處理方法可分為:分組密碼和序列密碼。</p><p> ?。?)按密鑰使用個數可分:對稱密碼體制,非對稱密碼體制。</p>

30、<p>  置換密碼:是將明文的每個元素(比特、字母、比特或字母的組合)映射到其他元素。</p><p>  易位密碼:是對明文的元素進行重新布置。</p><p>  分組密碼:的加密方式是首先將明文序列以固定長度進行分組,每一組明文用相同的密鑰和加密函數進行運算。 分組密碼設計的核心上構造既具有可逆性又有很強的線性的算法。 </p><p>  序列

31、密碼:的加密過程是將報文,話音,圖象,數據等原始信息轉化成明文數據序列,然后將它同密鑰序列進行異或運算。生成密文序列發(fā)送給接受者。</p><p>  對稱密碼體制:如果發(fā)送方使用的加密密鑰和接受方使用的解密密鑰相同,或從其中一個密鑰易于的出另一個密鑰,這樣的系統叫做對稱的,但密鑰或常規(guī)加密系統。</p><p>  非對稱密碼體制:如果發(fā)送方使用的加密密鑰和接受方使用的解密密鑰不相同,從

32、其中一個密鑰難以推出另一個密鑰,這樣的系統就叫做不對稱的,雙密鑰或公鑰加密系統。</p><p>  三、數據加密技術分類</p><p><b> ?。?)對稱型加密,</b></p><p><b> ?。?)不對稱型加密</b></p><p><b> ?。?)不可逆加密。<

33、/b></p><p>  對稱加密:使用單個密鑰對數據進行加密或解密。 </p><p>  不對稱加密:算法也稱為公開加密算法,其特點是有兩個密鑰,只有兩者搭配使用才能完成加密和解密的全過程。 </p><p>  不可逆加密算法:特征是加密過程不需要密鑰,并且經過加密的數據無法被解密,只有同樣輸入的輸入數據經過同樣的不可逆算法才能得到同樣的加密數據。 &

34、lt;/p><p>  從通信網絡的傳輸方面,數據加密技術可以分為3類:</p><p>  (1)鏈路加密方式,</p><p> ?。?)節(jié)點到節(jié)點方式</p><p> ?。?)端到端方式。 </p><p>  鏈路加密方式:是一般網絡通信安全主要采用的方式。 </p><p>  節(jié)點到節(jié)

35、點加密方式:是為了解決在節(jié)點中數據是明文的缺點,在中間節(jié)點里裝有加,解密的保護裝置,由這個裝置來完成一個密鑰向另一個密鑰的變換。 </p><p>  端到端方式:在端到端機密方式中,由發(fā)送方加密的數據在沒有到達最終目的節(jié)點之前是不被解密的。</p><p><b>  四、密碼分析 </b></p><p>  試圖發(fā)現明文或密鑰的過程叫做密

36、碼分析。也就是同常所說的密碼破譯。密碼分析人員使用的策略取決于加密方案的特性和分析人員可用信息。</p><p>  密碼分析過程通常包括:分析、假設、推斷和證實等步驟。 </p><p>  (下表為各種加密消息破譯類型)</p><p><b>  加密消息破譯類型</b></p><p>  尋找密鑰所需的平均時間

37、</p><p>  3 .2 本程序流程圖</p><p><b>  第四章 編碼實現</b></p><p>  4 .1 程序的總體設計與使用方法</p><p>  本程序是針對數據加密解密技術設計的一款數據加密解密軟件,它能對用戶的密碼進行算法邏輯上的加密。運行程序后,用戶會看到一給非常友好的界面菜單,有

38、3個選項可供選擇。第一個是數據加密,第二個是數據解密,第三個是退出。這時,系統會提示用戶去做選擇。</p><p>  Turbo C上顯示的主菜單界面(這里是漢文實際英文)</p><p>  ======================================================== </p><p>  歡迎使用數據加密解密軟件 ====

39、====================================================</p><p><b>  1.進行數據加密 </b></p><p>  2.進行數據解密 </p><p><b>  3.退出</b></p><p>  請選擇1—3 進行操作<

40、/p><p>  ========================================================</p><p>  當用戶選擇第一個數據加密時,系統會提示用戶輸入小于16位的明文密碼,用戶把想要轉換成密文的密碼輸入,按回車結束。這時,系統會透過自身的密鑰加密算法自動將轉換好的密文告訴用戶,用戶可以牢牢地記住,也可以選擇把它記到紙上。按任意鍵可返回主菜單。&l

41、t;/p><p><b>  進入數據加密界面:</b></p><p>  請輸入16位以下明文:</p><p><b>  XXXXXX→明文</b></p><p><b>  數據加密后的密文:</b></p><p><b>  XXX

42、XXX→密文</b></p><p>  按任意鍵返回主菜單!</p><p>  當用戶選擇第二個數據解密時,系統會提示用戶輸入小于16位的密文,此次輸入的是用戶剛剛通過本程序加密后得到的密文,而不再是用戶自己的密碼,是把它輸入進去后,系統會通過自身的密鑰解密算法自動將轉換好的明文告訴用戶,用戶可以自行驗證。</p><p><b>  進入

43、數據解密界面:</b></p><p>  請輸入16位以下密文:</p><p><b>  XXXXXX→密文</b></p><p><b>  數據解密后的明文:</b></p><p><b>  XXXXXX→明文</b></p><

44、p><b>  按任意鍵返回主菜單</b></p><p>  當用戶選擇第三個退出時,退出本程序。(程序的關鍵在于密鑰)</p><p>  4 .2 實現本程序的關鍵C技術</p><p>  本程序主要運用的系統函數:</p><p><b>  gotoxy</b></p>

45、;<p>  函數功能:將光標移動到指定位置說明,Y行和X列;gotoxy(0,0)將光標移動到屏幕左上角。</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函數實現一個位于屏幕中央的菜單界面。</p><p>  下面的就是加密與解密技術</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>  第五章 調試與測試</b></p><p>  1.程序運行后,會出現一個友好的界面,供用戶選擇。</p>&

60、lt;p>  2.當用戶輸入1要進行數據加密時,顯示的界面,程序會提示用戶輸入字符并且不要超過16個。</p><p>  3.當用戶輸入需要加密的明文后,經過內置的算法,程序會把其對應的密文告訴用戶。</p><p>  4.當用戶選擇2數據解密時出現的界面,程序會提示用戶輸入需要解密的密文并且不要超過16個。</p><p>  5.當用戶輸入需要解密的密

61、文后,經過內置的算法,程序會把解密后其對應的明文告訴用戶。</p><p><b>  第六章 總結與心得</b></p><p>  課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現,提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發(fā)展的日新日異,當今計算機應用在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌

62、握計算機開發(fā)技術是十分重要的。</p><p>  這是一款數據加密解密軟件,它能對你的密碼進行加密。有的時候,在我們輸入密碼時,很容易被別人看到,就算是看不到,都用星號來代替它們,盜密碼者也能通過一些手段,將其破譯。我就有過這樣一段經歷。我比較喜歡上網,在網吧輸入QQ號和QQ密碼不久,就提示我我的QQ號在其他地方已經登陸,這讓我百思不得其解,不過我現在明白了,也許QQ這款軟件給我的密碼加密了,不過被盜密碼者給破

63、譯了,也許QQ它根本就沒有給我的密碼加密被盜密碼這監(jiān)聽到了??傊业拿艽a是泄露了。那一次讓我損失了不少,也讓我明白了數據加密的道理。今天,借著這個課程設計的機會,我親自做一款數據加密解密的小軟件,小程序,我知道雖然我的小軟件現在任何場所任何地方都派不上用場,不過我相信,總有一天會的!</p><p>  回顧起此次課程設計,至今我仍感慨頗多,的確,從拿到題目到完成整個編程,從理論到實踐,在整整半個學期的日子里,

64、可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現了自己的不足之處,對以前所

65、學過的知識理解得不夠深刻,掌握得不夠牢固,比如說結構體……通過這次課程設計之后,一定把以前所學過的知識重新溫故。</p><p>  這次課程設計終于順利完成了,在設計中遇到了很多編程問題,最后在老師的辛勤指導下,終于游逆而解。同時,在老師的身上我學得到很多實用的知識,在次我表示感謝!同時,對給過我?guī)椭乃型瑢W和各位指導老師再次表示忠心的感謝!</p><p><b>  附

66、 錄:參考文獻</b></p><p>  1.全國計算機登記考試二級教程—C預言程序設計 高等教育出版社 田樹青</p><p>  2.C程序設計(第三版) 清華大學出版社 譚浩強</p><p>  3.C語言程序設計 清華大學出版社 郭有強</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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論