操作系統(tǒng)課程設(shè)計---文件加密存儲_第1頁
已閱讀1頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p>  設(shè)計簡介…………………………………………………………</p><p>  課程設(shè)計題目………………………………………………………………………</p><p>  課程設(shè)計小組成員…………………………………………………………………</p><p>  設(shè)計目的

2、……………………………………………………</p><p>  設(shè)計意義……………………………………………………</p><p>  設(shè)計要求……………………………………………………</p><p>  設(shè)計內(nèi)容……………………………………………………</p><p>  程序流程圖…………………………………………………</p>

3、<p>  程序源代碼…………………………………………………</p><p>  程序運行結(jié)果分析…………………………………………</p><p>  系統(tǒng)調(diào)用……………………………………………………</p><p>  心得體會……………………………………………………</p><p>  參考文獻……………………………………………

4、………………</p><p><b>  一、設(shè)計簡介:</b></p><p>  設(shè)計課題:文件加密存儲</p><p><b>  二、設(shè)計目的:</b></p><p>  有時我們有些資料不希望別人看到,最常用的方法就是加密。對給定的相關(guān)文件進行加密可以對文件進行保護,可以防止某些重要信息

5、不被別人所知道甚至竊取。對文件起到保護作用,可以方便用戶使用某些只有自己能知道的信息,能夠安全保護文件的相關(guān)內(nèi)容幾信息不被外流。隨著信息社會的到來,人們在享受信息資源所帶來的巨大的利益的同時,也面臨著信息安全的嚴峻考驗。信息安全已經(jīng)成為世界性的現(xiàn)實問題,信息安全問題已威脅到國家的政治、經(jīng)濟、軍事、文化、意識形態(tài)等領(lǐng)域,同時,信息安全問題也是人們能否保護自己的個人隱私的關(guān)鍵。信息安全是社會穩(wěn)定安全的必要前提條件。</p>&

6、lt;p><b>  三、設(shè)計意義:</b></p><p>  至今,密碼技術(shù)是取得信息安全性最有效的一種方法, 密碼技術(shù)是信息安全的核心技術(shù)。通過數(shù)據(jù)加密,人們可以有效地保證通信線路上的內(nèi)容不被泄露,而且還可以檢驗傳送信息的完整性。進一步,密碼技術(shù)可以應(yīng)用于數(shù)字簽名、身份認證和信息鑒定,這些應(yīng)用對于資源存取控制以及其它安全措施是必須而且有效的。相對于防病毒軟件和防火墻軟件來說,基于

7、密碼技術(shù)密碼類產(chǎn)品、認證類產(chǎn)品份額相對較小,但隨著金融、電信、政府等行業(yè)信息化建設(shè)對于網(wǎng)絡(luò)安全整體解決方案需求的增加,將會有較大的增長。</p><p><b>  四、設(shè)計要求:</b></p><p>  利用文件系統(tǒng)的系統(tǒng)調(diào)用編程對文件的內(nèi)容進行加、解密。要求程序從環(huán)境的命令行攜帶4個參數(shù)。第一是文件名,第二個是操作方式,第三個是密鑰,第四個是加密鑰循環(huán)使用長度

8、。其中后兩個參數(shù)是可以忽略,但對忽略的情況要提供缺省值。要求最后實現(xiàn)對文件的加密轉(zhuǎn)儲,或通過改道的辦法進行轉(zhuǎn)儲。對于已加密的文件可以進行解密顯示或解密后轉(zhuǎn)儲。建議加密過程使用按字符進行異或的方式處理,你也可提供自己的加密方式。</p><p><b>  五、設(shè)計內(nèi)容:</b></p><p>  加密技術(shù)是依靠加密算法對原始文檔進行編碼形成密文從而達到加密目的。加密

9、算法就是通過一組密鑰對原始信息(明文)進行一系列的數(shù)學運算得到另外一組信息(密文),這就是加密過程。采用同樣的算法和同樣的密鑰,可以從密文算回原始信息(明文),這就是解密過程。</p><p>  本設(shè)計采用按字符異或的加密算法對文檔進行加密形成密文,而后,用同樣的算法配合密鑰和密鑰循環(huán)長度可以對密文進行解密。程序從命令行攜帶文件名(in)、操作方式(Op)、密鑰(pwd)、加密鑰循環(huán)使用長度(length)四個

10、參數(shù),其中pwd和length可以忽略,程序為忽略的情況提供了缺省值。若命令行帶入的參數(shù)少于兩個,即沒有參數(shù)或只有第一個參數(shù),程序提供了輸入塊對四個參數(shù)進行輸入。</p><p><b>  六、程序流程圖:</b></p><p><b>  七、程序源代碼:</b></p><p>  #include<stdi

11、o.h></p><p>  #include<stdlib.h></p><p>  #include<string.h></p><p>  void jiami(char *in,char *pwd,int length);/*函數(shù)聲明*/</p><p>  void jiemi(char *in,ch

12、ar *pwd,int length);/*函數(shù)聲明*/</p><p>  int main(int argc,char *argv[])</p><p><b>  {</b></p><p>  char in[30];/*需要加密或解密的文件名*/</p><p>  int length;/*加密鑰循

13、環(huán)使用長度*/</p><p>  char pwd[8];/*加密鑰*/</p><p>  char Op[10];/*操作方式*/</p><p>  if(argc<3) /*如果從命令行帶入的參數(shù)少于兩個,剛提示輸入*/</p><p><b>  {</b></p&

14、gt;<p>  printf("You must enter filename and Operation mode!\n");</p><p>  printf("Input filename:\n");</p><p>  scanf("%s",in);</p><p>  printf

15、("Input Operation mode:\n");</p><p>  scanf("%s",Op);</p><p>  printf("Enter password:\n");</p><p>  scanf("%s",pwd);</p><p>  p

16、rintf("Input length:\n");</p><p>  scanf("%d",&length);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b

17、></p><p>  if(argc==3) /*命令行帶兩個參數(shù),后兩個忽略,則給后兩個參數(shù)提供缺省值pwd[]="00000000",length=8*/</p><p><b>  {</b></p><p>  strcpy(in,argv[1]);</p><p>  str

18、cpy(Op,argv[2]);</p><p>  strcpy(pwd,"00000000");</p><p><b>  length=8;</b></p><p><b>  }</b></p><p>  else if(argc==4)/*若從命令行帶入三個參數(shù),

19、剛對length提供缺值8*/</p><p><b>  {</b></p><p>  strcpy(in,argv[1]);</p><p>  strcpy(Op,argv[2]);</p><p>  strcpy(pwd,argv[3]);</p><p><b>  len

20、gth=8;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  strcpy(in,argv[1]);</p><p>  strcpy(

21、Op,argv[2]);</p><p>  strcpy(pwd,argv[3]);</p><p>  length=(int)argv[4]-48;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(strcmp(

22、"jiami",Op)==0)</p><p>  jiami(in,pwd,length);/*調(diào)用加密*/</p><p>  else if(strcmp("jiemi",Op)==0)</p><p>  jiemi(in,pwd,length);/*調(diào)用解密*/</p><p><

23、;b>  else</b></p><p>  printf("Input error!");</p><p><b>  }</b></p><p>  void jiami(char *in,char *pwd,int length)/*加密*/</p><p><b&g

24、t;  {</b></p><p>  FILE *fp1,*fp2;</p><p>  register char ch;</p><p><b>  int j=0;</b></p><p>  fp1=fopen(in,"rb");/*為輸入打開一個二進制文件*/</

25、p><p>  if(fp1==NULL)</p><p><b>  {</b></p><p>  printf("Cannot open in-file!\n");</p><p><b>  exit(1);</b></p><p><b>

26、  }</b></p><p>  fp2=fopen("encryption_file","wb");/*為讀寫建立一個新的二進制文件*/</p><p>  if(fp2==NULL)</p><p><b>  {</b></p><p>  printf(&

27、quot;Cannot open or create output-file!\n");</p><p><b>  exit(1);</b></p><p><b>  }</b></p><p>  ch=fgetc(fp1);</p><p>  while(!feof(fp1))&

28、lt;/p><p><b>  {</b></p><p>  fputc(ch^pwd[j>=length?j=0:j++],fp2);/*按字符異或加密*/</p><p>  ch=fgetc(fp1);</p><p><b>  }</b></p><p> 

29、 fclose(fp1);</p><p>  fclose(fp2);</p><p><b>  }</b></p><p>  void jiemi(char *in,char *pwd,int length) /*解密*/</p><p><b>  {</b></p>

30、;<p>  FILE *fp1,*fp2;</p><p>  register char ch;/*寄存器變量ch */</p><p><b>  int j=0;</b></p><p>  fp1=fopen(in,"rb");/*為輸入打開一個二進制文件*/</p>&

31、lt;p>  if(fp1==NULL)</p><p><b>  {</b></p><p>  printf("Cannot open in-file!\n");</p><p><b>  exit(1);</b></p><p><b>  }</

32、b></p><p>  fp2=fopen("crack_file.txt","wb");/*為讀寫建立一個新的二進制文件*/</p><p>  if(fp2==NULL)</p><p><b>  {</b></p><p>  printf("Cann

33、ot open or create output-file!\n");</p><p><b>  exit(1);</b></p><p><b>  }</b></p><p>  ch=fgetc(fp1);</p><p>  while(!feof(fp1))</p>

34、<p><b>  {</b></p><p>  fputc(ch^pwd[j>=length?j=0:j++],fp2);/*按加密方法進行解密*/</p><p>  ch=fgetc(fp1);</p><p><b>  }</b></p><p>  fclose

35、(fp1);</p><p>  fclose(fp2);</p><p><b>  }</b></p><p>  八、程序運行結(jié)果分析:</p><p>  cc jiami.c編譯程序,</p><p>  1、用./a.out(不帶參數(shù)或參數(shù)個數(shù)小于兩個)運行程序,程序提示需要輸入文件名

36、和操作方式,按提示進行參數(shù)輸入,程序運行,按操作要求對目標文件進行加密解密操作,若文件不存在或打開失敗,則操作失敗,給出Cannot open in-file! 提示,程序結(jié)束;</p><p>  2、用./a.out 文件名 操作方式(帶兩個參數(shù)) 運行程序,忽略后兩個參數(shù),程序為后兩個參數(shù)提供缺省值,密鑰為“00000000”,循環(huán)長度為8;</p><p>  3、用./a.out

37、 文件名 操作方式 密鑰(帶三個參數(shù))運行程序,則程序為最后一個參數(shù)密鑰循環(huán)使用長度設(shè)置缺省值8;</p><p>  4、用./a.out 文件名 操作方式 密鑰 加密鑰循環(huán)使用長度(帶四個參數(shù)),程序按用戶所提供的參數(shù)值運行;</p><p>  不管用哪種方式運行程序,若給出的文件不存在或打開失敗,則操作(加密或解密)失敗; 加密或解密時,若密文文件encryption_file或解

38、密后的文檔crack_file.txt已存在,則程序會刪除原有文件用新文件替換; 加密過程采用按字符異或的方式處理。</p><p><b>  程序改進方案:</b></p><p>  1、本程序采用的按字符異或加密的算法是一種比較簡單的加密算法,安全性較差,若對文件保密性要求比較高,則可采用一些復(fù)雜的算法進行加密。</p><p>  2

39、、本程序入口只能輸入要加密或解密的目標文件名,而對加密或解密后的文件不能自定義,只能用程序提供的encryption_file和crack_file.txt存放文件,這樣,當對同一目錄下多個文檔加密時,加密解密操作后的文件會替換原來的文件,造成數(shù)據(jù)丟失;</p><p><b>  九、系統(tǒng)調(diào)用:</b></p><p>  int main(int argc,cha

40、r *argv[])</p><p>  argc 是外部命令參數(shù)的個數(shù),argv[] 存放各參數(shù)的內(nèi)容.在運行程序以后,操作系統(tǒng)會自動將參數(shù)傳給你。例如編譯好的程序叫做program.exe 你運行program a b 這個時候,argc = 3 argv[0] = "program" argv[1] = "a" argv[2] = "b"</

41、p><p>  fopen ( string filename, string mode)</p><p>  fopen函數(shù)用來打開一個文件,其調(diào)用的一般形式為:文件指針名=fopen(文件名,使用文件方式); 其中,“文件指針名”必須是被說明為FILE 類型的指針變量; “文件名”是被打開文件的文件名;“使用文件方式”是指文件的類型和操作要求?!拔募笔亲址A炕蜃址當?shù)組。</

42、p><p><b>  文件使用方式意義:</b></p><p>  “rt” 只讀打開一個文本文件,只允許讀數(shù)據(jù) “wt” 只寫打開或建立一個文本文件,只允許寫數(shù)據(jù) “at” 追加打開一個文本文件,并在文件末尾寫數(shù)據(jù) “rb” 只讀打開一個二進制文件,只允許讀數(shù)據(jù) “wb” 只寫打開或建立一個二進制文件,只允許寫數(shù)據(jù)“ab” 追加打開一個二進制文件,并在文件

43、末尾寫數(shù)據(jù) “rt+” 讀寫打開一個文本文件,允許讀和寫 </p><p>  “wt+” 讀寫打開或建立一個文本文件,允許讀寫 “at+” 讀寫打開一個文本文件,允許讀,或在文件末追加數(shù)據(jù)“rb+” 讀寫打開一個二進制文件,允許讀和寫“wb+” 讀寫打開或建立一個二進制文件,允許讀和寫“ab+” 讀寫打開一個二進制文件,允許讀,或在文件末追加數(shù)據(jù)</p><p>  fputc

44、(char ch,FILE *fp);</p><p>  作用: 把一個字符寫到磁盤文件上去,即將字符ch輸出到fp所指向的文件中去。</p><p>  返回值: 成功:返回值就是輸出的字符;</p><p>  失?。悍祷谽OF(-1)。</p><p>  fgetc(FILE *fp);</p><p>

45、  作用:從指定的文件讀入一個字符,即從fp所指向的文件中讀入一個字符。</p><p>  返回值: 成功:返回值所得到的字符;</p><p>  失?。悍祷谽OF(-1)。</p><p>  feof(FILE *fp)</p><p>  作用:檢查文件是否結(jié)束。</p><p>  返回值: 遇文件結(jié)束

46、符返回非零值,否則返回0</p><p><b>  心得體會</b></p><p>  作為計算機類本科生教學的主要基礎(chǔ)課之一,課程緊密結(jié)合計算機課程類的專業(yè)特點,系統(tǒng)介紹操作系統(tǒng)的基本知識,基本組成,體系結(jié)構(gòu)和工作模式,從而使學生能較清楚地了解操作系統(tǒng)的知識,建立起系統(tǒng)的概念。</p><p>  這次操作系統(tǒng)課程設(shè)計用時一個星期,在整整

47、一星期的日子里,可以說得是大家積極努力準備,同時可以學到很多很多的東西,不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。以前,在寫一個程序的時候,我總是不細心,怕很浪費時間。但是,這次課程設(shè)計完全改變了我以前的那種錯誤的認識,以前我接觸的那些程序都是很短、很基礎(chǔ)的,但是在課程設(shè)計中碰到的那些需要很多代碼才能完成的任務(wù),在做設(shè)計的過程中,我們每一步要做什么,每一步要完成什么任務(wù)都有一個很清楚的思路,</p&

48、gt;<p>  其次,以前對于編程工具的使用還處于一知半解的狀態(tài)上,但是經(jīng)過一段上機的實踐,對于怎么去排錯、查錯,怎么去看每一步的運行結(jié)果,確保程序的正確性上都有了很大程度的提高。</p><p>  通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力

49、。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。</p><p>  這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多編程問題,最后在同學和老師的辛勤指導(dǎo)下,終于游刃而解。</p><p><b>  參考文獻:</b></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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論