《c語言課程設(shè)計(jì)》課程設(shè)計(jì)--數(shù)據(jù)的加密與解密_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  《C語言課程設(shè)計(jì)》</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p><b>  目錄</b></p><p>  目錄…………………………………………………………………………1</p><p>  課程設(shè)計(jì)任務(wù)書……………

2、………………………………………………2</p><p>  摘要…………………………………………………………………………3</p><p>  關(guān)鍵詞………………………………………………………………………3</p><p>  原理…………………………………………………………………………3</p><p>  1. 系統(tǒng)功能分析…………………

3、…………………………………………4</p><p>  1.1 設(shè)計(jì)目的…………………………………………………………………4</p><p>  1.2 功能描述…………………………………………………………………4</p><p>  2. C語言程序編寫…………………………………………………………5</p><p>  2.1程序結(jié)構(gòu)圖…

4、………………………………………………………5</p><p>  2.2程序流程圖…………………………………………………………5</p><p>  2.3 具體程序源代碼……………………………………………………8</p><p>  3. C語言程序功能示例……………………………………………………11</p><p>  4. 設(shè)計(jì)總結(jié)…

5、………………………………………………………………12</p><p>  5. 參考文獻(xiàn)…………………………………………………………………13</p><p>  《C語言程序》課程設(shè)計(jì)任務(wù)書</p><p><b>  摘要 </b></p><p>  隨著現(xiàn)代化的發(fā)展,人們的數(shù)據(jù)需要更笀便、安全和可靠的加密管理模式

6、。設(shè)計(jì)一個基于C語言的數(shù)據(jù)加密及解密軟件,可以方便對數(shù)據(jù)的加密與解密。本設(shè)計(jì)實(shí)現(xiàn)了數(shù)據(jù)的加密及?密,運(yùn)行軟件之后只需輸入英文句子倎,再輸入換位位數(shù)(密鑰),即可輸出密文,也即對該數(shù)據(jù)進(jìn)行加密;輸入密文后再輸入換位位數(shù)則可輸出明文,即解密操作。朄設(shè)計(jì)的加密?解密系統(tǒng),運(yùn)用了C語言程序設(shè)計(jì)的知識,具有對英文文本加密和解密的功能,并在此基礎(chǔ)上可進(jìn)行對文件的操作。</p><p><b>  關(guān)鍵詞 <

7、/b></p><p><b>  C語言;</b></p><p><b>  程序設(shè)計(jì);</b></p><p><b>  換位法</b></p><p><b>  換位位數(shù)</b></p><p><b>

8、  數(shù)據(jù)加密與解密;</b></p><p><b>  原理</b></p><p>  換位法加密的原理是將英文句子中的空格去除,然后將句子排成若干行,每行的字符數(shù)為換位位數(shù),再按列輸出即為密文,不足部分填入隨機(jī)字母。例如英文Can you come here若換位位數(shù)取4,則密文為comraueenchayoeb,如右圖所示。</p>

9、<p><b>  一、系統(tǒng)功能分析</b></p><p><b>  1.1設(shè)計(jì)目的</b></p><p>  本課程設(shè)計(jì)的目的是為了保證個人數(shù)據(jù)資料不被他人非法竊取使用,保護(hù)個人的隱私及重要文件!</p><p><b>  1.2功能描述</b></p><p&

10、gt;  本程序主要是對已知文件(為英文字符)通過一定的算法將其轉(zhuǎn)換成非本身的其他英文字母以達(dá)到文件加密的目的。整個系統(tǒng)由以下幾大功能模塊組成。</p><p>  1.2.1主控選擇模塊</p><p>  此模塊是主程序操作界面,供用戶進(jìn)行選擇。用戶可選擇執(zhí)行加密或解密操作。</p><p><b>  1.2.2加密模塊</b></

11、p><p>  加密模塊主要是完成對文件的加密操作。從外部文件中讀入任意一個文件并將它加密并顯示出來!</p><p><b>  1.2.3解密模塊</b></p><p>  解密模塊是完成對文件的解密工作,將密文轉(zhuǎn)換為可被識別的明文。從外部文件中讀入任意一個文件并將它解密并顯示出來!</p><p>  本綜合訓(xùn)練是計(jì)

12、算機(jī)科學(xué)與技術(shù)、信息管理與信息系統(tǒng)、軟件工程專業(yè)重要的實(shí)踐性環(huán)節(jié)之一,是在學(xué)生學(xué)習(xí)完《C語言程序設(shè)計(jì)》 《數(shù)據(jù)結(jié)構(gòu)》課程后進(jìn)行的一次全面的綜合練習(xí)。本課綜合訓(xùn)練的目的和任務(wù):</p><p>  1. 鞏固和加深學(xué)生對C語言、數(shù)據(jù)結(jié)構(gòu)課程的基本知識的理解和掌握;</p><p>  2. 掌握C語言編程和程序調(diào)試的基本技能;</p><p>  3. 利用C語言進(jìn)行

13、基本的軟件設(shè)計(jì);</p><p>  4. 掌握書寫程序設(shè)計(jì)說明文檔的能力;</p><p>  5. 提高運(yùn)用C語言、數(shù)據(jù)結(jié)構(gòu)解決實(shí)際問題的能力。 </p><p>  二、C語言源程序編寫:</p><p><b>  2.1程序結(jié)構(gòu)圖:</b></p><p><b>  2.2程

14、序流程圖</b></p><p>  2.3、具體程序源代碼如下:</p><p>  #include<stdio.h></p><p>  #include<string.h></p><p>  #include<time.h></p><p>  #define

15、CODELEN 256</p><p>  char *encode(char *dest,char *s1,int key)</p><p><b>  {</b></p><p>  int i,j,len,len2,n=0;</p><p>  len=strlen(s1);</p><p>

16、;  if((len % key)!=0)</p><p>  len2=len+key-(len % key);</p><p><b>  else</b></p><p><b>  len2=len;</b></p><p>  (timesrand(NULL));</p>&

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

18、><p>  for(i=0;i<(len2/key);i++)</p><p>  dest[n++]=s1[i*key+j];</p><p>  dest[n]=0;</p><p>  return dest;</p><p><b>  }</b></p><p&g

19、t;  char *decode(char *dest,char *str,int key)</p><p><b>  {</b></p><p>  int i,j,len,n=0;</p><p>  len=strlen(str);</p><p>  if((len % key)!=0) </p>

20、<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></p><p>  des

21、t[n++]=str[j*len+i];</p><p><b>  }</b></p><p>  dest[n]=0;</p><p>  return dest;</p><p><b>  }</b></p><p>  int main()</p>&

22、lt;p><b>  {</b></p><p>  int key,i,j,len;</p><p>  char s1[CODELEN];</p><p>  char str[CODELEN];</p><p>  char xstr[CODELEN];</p><p>  print

23、f("Please enter a string:");</p><p>  gets(str);</p><p><b>  {</b></p><p>  int m=0,i=0,t;</p><p><b>  char ch;</b></p><p&g

24、t;  t=strlen(str);</p><p>  for(i=0;i<t;i++)</p><p>  if(str[i]!=' '&&str[i]!='\0')</p><p><b>  {</b></p><p>  ch=str[i];</p&g

25、t;<p>  s1[m]=ch;m=m+1;</p><p><b>  }</b></p><p>  ch=str[i];</p><p><b>  s1[m]=ch;</b></p><p>  if(s1[0]>='A'&&s1[0]&

26、lt;='Z')</p><p>  s1[0]=s1[0]+32;}</p><p><b>  puts(s1);</b></p><p>  printf("Please enter a digit:");</p><p>  scanf("%d",&

27、key);</p><p>  encode(xstr,s1,key);</p><p>  printf(“The mi wen is:”);</p><p>  printf("%s\n",xstr);</p><p>  if(decode(s1,xstr,key)!=NULL)</p><p&g

28、t;<b>  {;} </b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("NULL");}</p><p><b>  {</b></p>

29、<p><b>  int a;</b></p><p>  char s2[CODELEN];</p><p>  printf("Please enter again a digit:");</p><p>  scanf("%d",&a);</p><p>

30、  getchar();</p><p>  printf("Please enter again a string:");</p><p>  gets(s2); </p><p>  if(a==key&&s2[0]==s1[0])</p><p><b>  {</b></

31、p><p>  printf(“The ming wen is:”);</p><p>  puts(str);</p><p><b>  }</b></p><p>  printf(“****”);</p><p>  printf(“****”);</p><p>&l

32、t;b>  }</b></p><p><b>  }</b></p><p>  三、C語言程序功能示例:</p><p><b>  操作過程中的截圖:</b></p><p><b>  測試數(shù)據(jù):</b></p><p>  P

33、lease enter a string:Nice to meet you </p><p>  Please enter a digit:4;</p><p>  The mi wen is:nteuiotacmyfeeok</p><p>  Please enter again a digit:4</p><p>  Please en

34、ter again a string: Nice to meet you</p><p>  ******** </p><p>  Please enter a string:Well down boby</p><p>  Please enter a digit:4;</p><p>  The mi wen is:wdbeoo

35、lwblny</p><p>  Please enter again a digit:4</p><p>  Please enter again a string: Well down boby</p><p><b>  ********</b></p><p><b>  四、設(shè)計(jì)總結(jié)</b>

36、;</p><p>  通過這次課程設(shè)計(jì),我學(xué)到了許多東西,在完成設(shè)計(jì)的過程中也遇到了許多的問題,通過不斷的查資料,和向老師同學(xué)的請教,使得大部分問題得到了解決。并且解決問題的過程中我也學(xué)到了很多東西。</p><p>  在設(shè)計(jì)過程中,主要遇到的問題就是文件的操作問題,以前學(xué)習(xí)的時(shí)候,對文件的操作掌握的不是很好,但在做課程設(shè)計(jì)時(shí)會常常用到,經(jīng)認(rèn)真看書后解決了這個問題。還有就是對讀取文本文

37、件中的內(nèi)容不停止(一直讀下去)的問題。首先是密碼的存儲識別,后用fgetc(fp))!=EOF函數(shù)解決,使得讀函數(shù)不會無限讀下去,讀完后停止并還回文本內(nèi)容;其次是密碼太多時(shí)會出現(xiàn)亂碼的問題,后用while()函數(shù)解決。</p><p>  雖然在課程設(shè)計(jì)過程中修改了很多次,但程序還是很不完美,有一些問題未能解決。比如說程序的界面不夠美觀,不夠人性化;在對密碼的處理上也不甚太好,可能存在安全隱患。我將在以后的時(shí)間里

38、繼續(xù)努力,不斷充實(shí)自己。</p><p><b>  附軟件說明:</b></p><p>  本程序采用宏定義方式定義字符串的大小,增加了程序的通用性,</p><p>  本程序基本實(shí)現(xiàn)了要求的內(nèi)容:1.采用換位法進(jìn)行加密和解密;</p><p>  2.輸入英文句子后,再輸入換位位數(shù)(密鑰),即可輸出密文;<

39、/p><p>  3.輸入密文后再輸入換位位數(shù)則可輸出明文;</p><p>  數(shù)據(jù)的加密與解密的使用方法:</p><p>  1.加密使用方法: 首先輸入一個加密字符串(即明文),然后再輸入加密字?jǐn)?shù)(即密鑰),即可顯示結(jié)果(密文)。</p><p>  2.解密使用方法: 首先輸入解密字節(jié)數(shù)(密鑰),然后再輸入密文,即可顯示結(jié)果(即明文)

40、。</p><p><b>  五、參考文獻(xiàn)</b></p><p>  1. 譚浩強(qiáng) C語言程序設(shè)計(jì)(第二版).高等教育出版社,2002</p><p>  2. 黃維通 C語言程序設(shè)計(jì) 清華大學(xué)出版社</p><p>  3. 徐士良等. C語言常用算法程序集 清華大學(xué)出版社</p&g

41、t;<p>  4. 馬靖善等. C語言程序設(shè)計(jì).清華大學(xué)出版社,2005</p><p>  5. 張毅坤等. C語言程序設(shè)計(jì)教程[M] .西安交通大學(xué)出版社,2003</p><p>  物理與電子信息學(xué)院課程設(shè)計(jì)評定意見</p><p>  注:本頁與上一頁用A3紙?zhí)子〕煞饷婧头獾祝n程設(shè)計(jì)報(bào)告正文用A4紙打印然后裝訂</p>

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論