c語言程序設計文件加密解密_第1頁
c語言程序設計文件加密解密_第2頁
c語言程序設計文件加密解密_第3頁
c語言程序設計文件加密解密_第4頁
c語言程序設計文件加密解密_第5頁
已閱讀5頁,還剩21頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、C語言程序設計文件加密解密程序報告設計題目: 加密解密處理程序設計報告的電子文檔(B1OO8O128程序設 計.doc )一.老師對作業要求。1:對學生課程設計兩周的紀律及提交內容的要求:(1)規定上機的時間內不得無故缺勤,有事需要向指導老師書面請假;(2)上機時禁止玩游戲,屢教不改者,實習成績可為不及格;(3)每人手頭準備一至兩本C/C+的有關工具書,上機前作好充分的準備,包括事先寫好主要算法的程序代碼以保證充分利用上機的時間調試程序;(4)同組可以討論思路,但是程序要自己完成,不可抄襲,若完全抄襲別人的,實習成績可為不及格;(5)實習的最后階段認真完成實習報告的電子文檔。報告內容不得少于1

2、5頁。(6)每個學生最后提交的材料:壓縮文件一個,起名為:學號名勇目名.rar (如:B06020127學生管理系統.rar)。該壓縮文件中包含下列幾個文件:程序設計報告的電子文檔(起名為:學號一程序設計.doc)、 源程序文件(起名為:學號名一題目名.cpp,如:B06020127.學生管理系統.cpp)、原始數據文件(如:stud.dat).編譯鏈接后得到的可執行文件(起名為:學號名_題目名.exe)(7)請同學獨立完成報告,若發現兩份報告一模一樣,則兩人都按 不及格論處,請各位同學珍惜自己的版權,也請指導老師嚴格把關。附2:上機時間:每天上午8: 0011: 20附3:成績的評定根據學生

3、平時的上機出勤情況、為上機所作的準備情況、上機時的表現、程序的完成情況、報告的完成情況、驗收答辯時的表現等綜合打分。等級為:優秀、良好、中等、及格、 不及格。附4:課程設計報告具體內容要求學生管理系統(題目格式:宋體,3號,加粗,居中對齊)一、 課題內容和要求(格式:宋體,4號,加粗,兩端對齊)該部分可參考前面給出的問題描述再加以細化一些(正文格式:宋體,小4號,不加粗,兩端對齊,L5倍行距)二、需求分析(格式:宋體,4號,加粗,兩端對齊)在該部分中敘述每個模塊的功能要求(正文格式:宋體,小4號,不加粗,兩端對齊,L5倍行距)概要設計 (格式:宋體,4號,加粗,兩端對齊)在此說明每個部分的算法

4、設計說明(可以是描述算法的流程圖),每個程序中使用的存儲結構設計說明(如果指定存儲結構請寫出該存儲結構的定義,如果用面向對象的方法, 應該給出類中成員變量和成員函數原型聲明)。(正文格式:宋體,小4號,不加粗,兩端對齊,L5倍行距)四、源程序代碼(格式:宋體,4號,加粗,兩端對齊)各個算法實現的源程序(可以是一組源程序,每個功能模塊采用不同 的函數實現),源程序要按照寫程序的規則來編寫。要結構清晰,重點函數的重點變量,重點功能部分要加 上清晰的程序注釋。(正文格式:宋體,小4號,不加粗,兩端對齊)五、測試數據及其結果分析(格式:宋體,4號,加粗,兩端對齊)(正文格式:宋體,小4號,不加粗,兩端

5、對齊,1.5倍行距)六、調試過程中的問題(格式:宋體,4號,加粗,兩端對齊)每個模塊設計和調試時存在問題的思考(問題是哪些?問題如何解 決?),以及算法的改進設想。(正文格式:宋體,小4號,不加粗,兩端對齊,L5倍行距) 七、課程設計總結(格式:宋體,4號,加粗,兩端對齊) 總結可以包括:程序設計過程的收獲、遇到的問題,遇到問題解決 問題過程的思考、程序調試能力的思考,對該課程組織和考核方式的建議等。(正文格式:宋體,小4號,不加粗,兩端對齊,L5倍行距)原始數據文件(stud.dat)課題內容和要求.編寫一個對字符文件(由數字或字母組成)進行加密解密的程序。可以將 所需要的內容(整個文件或者

6、輸入的一行字符)加密,也可以將存儲的加密文件 翻譯回來。例如加密時可以將選取內容的每個字符依次反復加上“ 4963287312” 中的數字,如果范圍超過ASCII碼值的032(空格)一122( z),則進行模運算(既 N%122) o解密與加密的順序相反。2、部分要求(1)從鍵盤輸入要進行加密的一行字符串或者需要加密的文件名。(2)顯示菜單: I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I L設置加密方法.加密.解密.退出 1 | 4 4 4 | 1 | 4 4 4 | 1 | 4 4 4 | 1 | 4 4

7、4 | 1 (3)選擇菜單,進行相應的操作。加密方法是設置一加密字符串以及對文件 的哪些部分進行加密;加密是將原始文件加密并保存到文件中:解密是將加了密 的文件還原并保存到文件中,同時應比較與原始文件的一致性;顯示是將文件在 屏幕上顯示出來,供人工校對。(4)定義原始文件sourse. txt、加密文件result, txt和還原文件recall. txt3、其他要求(1)變量、函數命名符合規范。(2)注釋詳細:每個變量都要求有注釋說明用途;函數有注釋說明功能,對 參數、返回值也要以注釋的形式說明用途;關鍵的語句段要求有注釋解釋。(3)程序的層次清晰,可讀性強。4、需要掌握的知識(1)如何讀寫

8、文件(2)如何對字符進行加減操作,并保證加減后的數值處于某一范圍之內(模 運算)(3) 了解加解密的基本原理需求分析模塊分析:(1)在屏幕上顯示文件void printtxt ()用于將原始文件sourse. txt,加密文件result. txt,解密文件recall, txt, 的內容顯示在屏幕上,方便檢驗程序是否正確執行。在此函數中要以輸入方式打 開三個文件。(2)加密 void encode()對原始文件sourse. txt整個或部分字符串加密,并將加密后的內容寫入result, txt o加密時,每個字符依次反復加上“ 4963287312”中的數字,如果 范圍超過ASCH碼值的0

9、32(空格)一122( z),則進行模運算(即N%122).例如:加密the(t)116+4, (h)104+9, (e)101+6變為xqk(3)解密 void decode()對加密后的result, txt進行解密,并將解密后的內容寫入recall. txt 文件中。解密過程與加密過程的順序正好相反,即從第一個字符開始,每個字符 依次反復減去” 4963287312”中的數字,若執行減法后得到一個負數,則把這個 負數加122,即(N+122),其中N為負數。例如:把xqk解密(x) 120-4 (q)111-9 (k) 107-6變為the(4)設置加密方法void set ()由鍵盤輸

10、入,進行加密方法的設置,主要由輸出輸入語句組成,目的是為 了方便人機交流。(5)顯示菜單: I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I .設置加密方法.加密.解密.退出 I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I (6)加密方法川結構表示struct password/*加密方法*/char ps10;/*加密字符串*/long wd;/*加密的字節數*/;概要設計C語言程序設計文件加密解密C語言程序設計文件加密解密st

11、ruct password/*加密方法*/.加密程序的設計:開始,以輸出方式打開加密文件,以輸入方式打開原始文件,判斷文件是否為空, 若為空,對字符串進行加密:定義for循環,判斷i值是否小于字符串的長度, 是則進行加密運算,即將字符所對應的ASCALL碼加上加密字符串所對應的數 字減去48,得到的就是加密后的字符,如果范圍超過ASCII碼值的032(空格) 122( z),則進行模運算(即N%122),將加密后的文字寫入加密文件,關閉 打開的兩個文件,屏幕顯示加密成功。如果文件不為空,則對文件中字符加密, 加密過程與上述加密過程相似。.解密程序的設計:開始,以輸出方式打開解密密文件,以輸入方

12、式打開加密文件,對加密后的文 件中的字符串進行解密:定義for循環,判斷i值是否小于字符串的長度,是則 進行加密運算,即將字符所對應的ASCALL碼減去加密字符串所對應的數字加 上48,得到的就是解密后的字符,若執行減法后得到一個負數,則把這個負數 加122,即(N+122),其中N為負數。將解密后的文字寫入解密文件,關閉打開 的兩個文件,屏幕顯示解密成功。.顯示程序的設計:以輸入方式打開原始文件,加密文件,解密文件,將文件中進行的字符串讀入 到屏幕上,方便讀者進行比較。編譯連接后得到可執行文件(B10080128加密解密 處理.exp)源程序代碼#include#include#includ

13、e char ps10 ;/*加密字符串*/long wd;/*加密的字節數*/);struct password password; 定義一個加密方法結構變量char s100;void set()加密方法設置函數(printf (n輸入加密字符串:”);scanf(%s,password, ps);printf (n輸入加密字節數:“);scanf (ld”, password, wd);getchar ();system(pause);/*按任意鍵繼續,使界面整潔*/void printtxt ()/*顯示顯示原始文件和解密文件函數*/(/*以讀方式打開文件*/FILE *source

14、= fopen (source, txt”, ; 打開原始文件FILE result = fopen(result. txt, r);FILE recall = fopen(recall, txt”, rt); 打開解密文件char c;臨時字符存儲變量if (source = NULL )文件存在性判斷printf (不存在 source, txt 文件n);exit(O);if(result = NULL )(printf (不存在 result, txt 文件n);exit(0);if (recall = NULL ) 文件存在性判斷(printf (不存在 recall, txt 文件

15、n);exit (0);c = fgetc(source); 先從原始文件讀出一個字符,若不是文件結尾,則文 件內容非空if(c =EOF) 文件內容為空,輸出加密字符(printf (n 加密字符:);printf(%sn”,s);)else文件非空,輸出原始文件(printf (n 原始文件:);printf(%c,c);while(c=fgetc(source) != EOF) 文件非空調用判斷)printf(n);printf(n 解密文件:);while(c=fgetc(result) != EOF) 文件非空,輸出解密文件 printf(%c, c);printf(Xn);prin

16、tf CXn);printf (n 解密文件:);while(c=fgetc(recall) != EOF) 文件非空,輸出解密文件 printf(%c, c);printf (rT);/*下面是文件關閉操作*/fclose(source);/fclose(result);fclose(recall);system(pause);/*力口密*/void encode ()int m, n=strlen (password, ps), i, flag = 1; /m 存儲加密字符長度,n 存儲 加密字符串,i為臨時變量char N, w;char c,C;臨時字符存儲變量FILE result

17、= fopen(result. txt,wt); 以寫方式打開 result。 txt文件FILE *source = fopen(sourse. txt, wt);/以寫方式打開 sourceo txt文件if (result = NULL ) 文件非空容錯處理(printf (不存在 result, txt 文件n);exit(O);/ofstream out (result. txt,z);if (source = NULL ) 文件非空容錯處理(printf (不存在 source, txt 文件n);flag = 0;/ ifstream fw(sourse. txt);/ifstr

18、eam fs(s, ios:nocreate);if (flag = 1) C = fgetc(source);先得到一個文件內容if (flag = 0 II C=EOF )判斷文件是否為空,為空的話,對輸入字符加密(printf(請輸入要加密的字符串:n);scanf(s, s);m=strlen(s) ;/*對輸入的字符串加密*/fprintf (source, %s, s); 將輸入字符輸出至source文件中for(i=0;im;i+) static int a=0;if (a122)N二N%122;)fputc (N, result); 將加密內容輸出入result中a+;)els

19、e fputc (si, result);將加密內容輸出入 result 中)else 文件非空,對文件加密(w=C+password, ps0%n-48;fputc (w, result);將加密結果輸出至result文件中for( i=0;(c=fgetc(source) EOF;i+)(static int a=1;if(a122)N = N%122;/* 模運算*/fputc(N, result); /out. put(N);a+;else fputc(N, result);)PrintfCn 加密成功! n);關閉文件fclose (result);fclose (source);s

20、ystem(pause);)void decode ()/*解密*/(FILE * recall = fopen(recall. txt,wt);/*以寫方式打開文件*/FILE * result = fopen(result. txt, rt) ;/*以讀方式打開文件*/char c, N; 臨時變量int n=strlen (password, ps), i ; n存儲加密字符串長度,i為臨時變量文件存在性判斷if(result = NULL )(printf (不存在 result. txt 文件n);exit(O);if(recall = NULL )(printf (不存在 resu

21、lt. txt 文件n);exit(0);for( i=0; (c=fgetc (result) != EOF; i+) 對加密文件進行譯碼static int a=0;if (apassword. wd) (N=c-(password, psa%n-48);if(N0)(N= (N+122) %122;/* 模運算*/fputc(N, recall); else (if (N0) fputc C z, recall); 將解密結果輸出至 recall 文件 else fputc(N, recall);) a+;else fputc(N, recall) ;/printf(n 解密成功! n)

22、;關閉文件 fclose (result); fclose(recall); system(pause);)void cmptxt ()/水比較解密文件和原始文件的一致性,一致輸出 原字符,不一致輸出*/ 在程序中沒有調用/*以讀方式打開文件*/FILE *source = fopen(sourse. txt,rt); 打開原始文件 /FILE *result = fopen(result. txt, r);FILE recall = fopen(recall. txt,rt); 打開解密文件 char c,d; 臨時字符存儲變量if (source = NULL )文件存在性判斷(print

23、f (不存在 source, txt 文件n); exit(O); /* if(result = NULL ) ( printf (不存在 result, txt 文件n); exit(O);*/if(recall = NULL ) 文件存在性判斷 (printf (不存在 recall, txt 文件n); exit(O);)c = fgetc(source); 先從原始文件讀出一個字符,若不是文件結尾,則文 件內容非空d = fgetc (recall); 先從解密文件讀出一個字符,若不是文件結尾,則文件內容非空if(c =EOF) 文件內容為空,輸出加密字符(printf (讀文件錯誤!

24、 n);exit(0);if(d =E0F) 文件內容為空,輸出加密字符(printf (讀文件錯誤! n);exit(0);printf (文件比較:);if (c = d)(printf (飛c”, c);else printf(一);while(c=fgetc(source) != EOF & (c=fgetc(source) != EOF) 文件 非空調用判斷(if (c = d)(printf (飛c”, c);else printf(一);printf Cn,z);/*下面是文件關閉操作*/ fclose(source);/fclose(result);fclose(recall)

25、;system(pause);)voidmenu () 主菜單printf (zn*n,z);printf(l.設置加密方法n);printf (2.加密n);printf (3.解密n);printf (4 .顯示文件n);printf (5.退出n);printf(zn*nz);printf (請選擇:);void main()int a=0;/*FILE *fl = f open (source. txt,wt); 創建文件FILE *f2 = fopen(result. txt,wt);FILE *f3 = fopen(recall. txt,wt);fclose(fl) ; fclo

26、se(f2) ;fclose(f3) ; / 關閉文件*/ menu ();while (a!=5)(scanf(%d, &a);switch(a)(調用設置加密方法函數清楚屏幕上的字符,是屏幕更整潔調用加密函數調用解密函數顯示原始文件與目標文件set ();system(cis);menu() ; break;encode();system(cls);menu() ; break;decode();system (cls);menu() ; break;printtxt ();system(cls);menu() ; break;printf (n 謝謝使用!nn); break;default:printf(n輸入錯誤請再次輸入n);system(cls);menu() ; break;)六、測試數據及其結果分析測試數據記錄:請輸入需要加密的內容:the東木 東木L設置加密方法.加密.解密.顯示文件.退出木木木木請選擇:1輸入加密字符串:496輸入加密字節數:3請按任意鍵繼續木木木木

溫馨提示

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

評論

0/150

提交評論