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

下載本文檔

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

文檔簡介

1、<p><b>  《C語言課程設計》</b></p><p><b>  課程設計報告</b></p><p><b>  目錄</b></p><p>  課程設計任務書…………………………………………………3</p><p>  摘要……………………………………

2、…………………………4</p><p>  關鍵詞……………………………………………………………4</p><p>  原理………………………………………………………………4</p><p>  一.系統(tǒng)功能分析………………………………………………5</p><p>  1.1設計目的……………………………………………………..5</p

3、><p>  1.2功能描述……………………………………………………..5</p><p>  二.C 語言程序編寫……………………………………………6</p><p>  2.1程序結構圖…………………………………………………..6</p><p>  2.2程序流程圖…………………………………………………..6</p><

4、p>  2.3程序源代碼…………………………………………………..8</p><p>  三.程序功能示例………………………………………………13</p><p>  3.1示例截圖……………………………………………………..13</p><p>  3.2測試過程……………………………………………………..16</p><p>  四

5、.設計體會與收獲……………………………………………16</p><p>  五.參考文獻……………………………………………………16</p><p>  《C 語言程序》課程設計任務書</p><p><b>  摘要:</b></p><p>  作為保障數(shù)據(jù)數(shù)據(jù)安全的一種方式,對于信息的加密技巧起源于歐洲,最廣為人知

6、的編碼機器是德國的German Enigma,在第二次世界大戰(zhàn)中德國人利用它創(chuàng)建了加密信息系統(tǒng),從而解決軍事信息的保密通訊問題。</p><p>  盡管加密技術被首先使用在軍事通信領域,但是人們或許出于安全的考慮,開始逐漸對于商業(yè)機密、政府文件等重要信息實施加密手段。數(shù)據(jù)加密應運而生。其基本原理是:</p><p>  對明文(可讀懂的信息)進行翻譯,使用不同的算法對明文以代碼形式(密碼

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

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

9、;<p><b>  原理:</b></p><p>  換位法加密的原理是將英文句子中的空格</p><p>  去除,然后將句子排成若干 行,每行的字符</p><p>  數(shù)為換位位數(shù),再按列輸出即為密文,不足</p><p>  部分填入隨機字母。;例如英文can you come here<

10、/p><p>  若換位位數(shù)取4,則密文為comraueench*yoe*,</p><p>  *代表隨機字母,如右圖所示:</p><p><b>  一、系統(tǒng)功能分析</b></p><p><b>  1.1 設計目的</b></p><p>  本課程設計的目的是為了保

11、證個人數(shù)據(jù)資料不被他人非法竊取使用,保護個人的隱私及重要文件。</p><p><b>  1.2 功能描述</b></p><p>  本程序主要是對已知文件(為英文字符)通過一定的算法將其轉換成非本身的其他英文字母以達到文件加密的目的。整個系統(tǒng)由以下幾大功能模塊組成。</p><p><b>  1.主控選擇模塊</b>

12、;</p><p>  此模塊是主程序操作界面,供用戶進行選擇。用戶可選擇執(zhí)行加密或解密操作。</p><p><b>  2.加密模塊</b></p><p>  此模塊執(zhí)行加密操作,輸入明文后,去除空格得s1,再判斷有沒有缺空格,有就補隨機字母,然后按照換位位數(shù)進行加密,從而得到密文。</p><p><b&g

13、t;  3.解密模塊</b></p><p>  解密模塊是完成對文件的解密工作,將密文轉換為可被識別的明文。從外部文件中讀入任意一個文件并將它解密并顯示出來。</p><p>  本次綜合訓練是計算機科學與技術、信息管理與信息系統(tǒng)、軟件工程專業(yè)重要的實踐性環(huán)節(jié)之一,是在學生學習完《C語言程序設計》、《數(shù)據(jù)結構》課程后進行的一次全面的綜合練習。本課綜合訓練的目的和任務是:<

14、;/p><p>  1. 鞏固和加深學生對C語言、數(shù)據(jù)結構課程的基本知識的理解和掌握;</p><p>  2. 掌握C語言編程和程序調(diào)試的基本技能;</p><p>  3. 利用C語言進行基本的軟件設計;</p><p>  4. 掌握書寫程序設計說明文檔的能力;</p><p>  5. 提高運用C語言、數(shù)據(jù)結構解決

15、實際問題的能力。</p><p>  二、C 語言源程序編寫:</p><p><b>  1 程序結構圖:</b></p><p><b>  主函數(shù)</b></p><p><b>  2 程序流程圖</b></p><p>  3所有的課題程序源代

16、碼:</p><p>  #include<stdio.h></p><p>  #include<string.h></p><p>  #define CHANGDU 1000</p><p>  int main( )</p><p><b>  { </b><

17、;/p><p>  char *jiami(char *p,char *s1,int key);</p><p>  char *jiemi(char *p,char *s2,int key);</p><p>  int key,i,j,len;</p><p>  char s1[CHANGDU];</p><p> 

18、 char s2[CHANGDU];</p><p>  char xstr[CHANGDU];</p><p>  printf(" *****************************\n");</p><p>  printf(" *

19、 welcome to use the system! *\n");</p><p>  printf(" *****************************\n");</p><p>  printf("qing shu ru yuan shi ming wen:");<

20、/p><p><b>  gets(s2);</b></p><p><b>  {</b></p><p>  int m=0,i=0,t;</p><p><b>  char ch;</b></p><p>  t=strlen(s2);</p&

21、gt;<p>  for(i=0;i<t;i++)</p><p>  if(s2[i]!=' '&&s2[i]!='\0')</p><p><b>  {</b></p><p><b>  ch=s2[i];</b></p><p

22、><b>  s1[m]=ch;</b></p><p><b>  m=m+1;</b></p><p><b>  }</b></p><p><b>  ch=s2[i];</b></p><p><b>  s1[m]=ch;<

23、;/b></p><p>  if(s1[0]>='A'&&s1[0]<='Z')</p><p>  s1[0]=s1[0]+32;</p><p><b>  }</b></p><p><b>  puts(s1);</b>&l

24、t;/p><p>  printf("qing shu ru jia mi mi yao:");</p><p>  scanf("%d",&key);</p><p>  jiami(xstr,s1,key);</p><p>  printf("jia mi mi wen shi:&q

25、uot;);</p><p>  printf("%s\n",xstr);</p><p>  if(jiemi(s1,xstr,key)!=NULL)</p><p><b>  {;}</b></p><p><b>  else</b></p><p&g

26、t;<b>  {</b></p><p>  printf("NULL");</p><p><b>  }</b></p><p><b>  {</b></p><p><b>  int a;</b></p>&l

27、t;p>  char str[CHANGDU];</p><p>  printf("**********************************************\n");</p><p>  printf("qing shu ru jie mi mi yao:");</p><p>  scanf(&q

28、uot;%d",&a);</p><p>  getchar();</p><p>  printf("qing shu ru jia mi mi wen:");</p><p>  gets(str);</p><p>  if(a==key&&str[0]==s1[0])</p&

29、gt;<p><b>  {</b></p><p>  printf("jie mi ming wen shi:");</p><p><b>  puts(s2);</b></p><p><b>  }</b></p><p><b

30、>  }</b></p><p><b>  }</b></p><p>  char *jiami(char *p,char *s1,int key)</p><p><b>  {</b></p><p>  int i,j,len,len1,n=0;</p>&

31、lt;p>  len=strlen(s1);</p><p>  if((len % key)!=0)</p><p>  len1=len+key-(len % key);</p><p><b>  else</b></p><p><b>  len1=len;</b></p>

32、;<p>  for(i=len;i<len1;i++)</p><p>  s1[i]=(char)((rand() % 26)+(rand() % 1)*('A'-'a')+'a');</p><p>  s1[len1]=0;</p><p>  for(j=0;j<key;j++)&l

33、t;/p><p>  for(i=0;i<(len1/key);i++)</p><p>  p[n++]=s1[i*key+j];</p><p><b>  p[n]=0;</b></p><p><b>  return p;</b></p><p><b>

34、;  }</b></p><p>  char *jiemi(char *p,char *s2,int key)</p><p><b>  {</b></p><p>  int i,j,len,n=0;</p><p>  len=strlen(s2);</p><p>  if(

35、(len % key)!=0)</p><p>  return NULL;</p><p>  len=(len / key);</p><p>  for(i=0;i<len;i++)</p><p>  for(j=0;j<key;j++)</p><p><b>  {</b>

36、</p><p>  p[n++]=s2[j*len+i];</p><p><b>  }</b></p><p><b>  p[n]=0;</b></p><p><b>  return p;</b></p><p><b>  }&l

37、t;/b></p><p>  我負責編寫的主程序源代碼:</p><p>  char *jiemi(char *p,char *s2,int key)</p><p><b>  {</b></p><p>  int i,j,len,n=0;</p><p>  len=strlen(

38、s2);</p><p>  if((len % key)!=0)</p><p>  return NULL;</p><p>  len=(len / key);</p><p>  for(i=0;i<len;i++)</p><p>  for(j=0;j<key;j++)</p>&

39、lt;p><b>  {</b></p><p>  p[n++]=s2[j*len+i];</p><p><b>  }</b></p><p><b>  p[n]=0;</b></p><p><b>  return p;</b></

40、p><p><b>  }</b></p><p><b>  三.程序功能示例</b></p><p><b>  3.1示例截圖:</b></p><p>  3.2測試過程:(以第一幅截圖舉例)</p><p>  (1)qing shu ru yua

41、n shi ming wen:Can you come here?</p><p>  canyoucomehere?</p><p>  qing shu ru jia mi mi yao:4</p><p>  jia mi mi wen shi:comraueenchi?yoea</p><p>  ******************

42、************************</p><p>  qing shu ru jie mi mi yao:4</p><p>  qing shu ru jia mi mi wen:comraueenchi?yoea</p><p>  jie mi ming wen shi:Can you come here?</p><p&g

43、t; ?。?)qing shu ru yuan shi ming wen:Can you come here</p><p>  canyoucomehere?</p><p>  qing shu ru jia mi mi yao:11</p><p>  jia mi mi wen shi:cearrney?oiuackoymietht</p>&

44、lt;p>  ******************************************</p><p>  qing shu ru jie mi mi yao:11</p><p>  qing shu ru jia mi mi wen: cearrney?oiuackoymietht</p><p>  jie mi ming wen shi:C

45、an you come here</p><p><b>  四.設計體會與收獲</b></p><p>  該程序是我與牛濤,杭世龍同學一起完成的,我負責解密函數(shù)的編寫,我負責加密函數(shù)的編寫,牛濤負責編寫主函數(shù),然后三個人在加以整合、更改,得到以上程序。在編寫主函數(shù)是遇到了一些問題,例如,在對待字符數(shù)組的處理問題上,遇到了些問題,但經(jīng)過查閱書籍,最終得以解決,感受頗

46、多。回顧起此次課程設計,至今我仍感慨頗多,的確,從從拿到題目到完成整個編程,從理論到實踐,在整整半個學期的日子里,可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題

47、,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說結構體……通過這次課程設計之后,一定把以前所學過的知識重新溫故。</p><p><b>  五.參考文獻</b></p><p>  《C語言程序設計》 譚浩強版</p><p>

48、  全國計算機登記考試二級教程—C預言程序設計 高等教育出版社 田樹青</p><p>  《C語言程序設計習題與實驗設計指導》電子科技大學出版社,編者孫淑霞,周家紀,丁照宇。</p><p>  《標準C語言基礎教程(第四版)》編者Gary J.Bronson</p><p>  物理與電子信息學院課程設計評定意見</p><p>  注:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論