操作系統(tǒng)文件加密系統(tǒng)課程設(shè)計報告._第1頁
操作系統(tǒng)文件加密系統(tǒng)課程設(shè)計報告._第2頁
操作系統(tǒng)文件加密系統(tǒng)課程設(shè)計報告._第3頁
操作系統(tǒng)文件加密系統(tǒng)課程設(shè)計報告._第4頁
操作系統(tǒng)文件加密系統(tǒng)課程設(shè)計報告._第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、河南城建學(xué)院操作系統(tǒng)原理課程設(shè)計報告書班 級: 0834131 專 業(yè): 信息管理與信息系統(tǒng)(本科)課程名稱: 操作系統(tǒng)原理 指導(dǎo)教師: 魏新紅 設(shè)計題目: 文件加密儲存 學(xué) 號: 姓 名: 同組人員: 計算機科學(xué)與工程學(xué)院2015年12月 前言 隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,人們的個人信息、網(wǎng)絡(luò)間的文件傳遞、電子商務(wù)等方面都需要大力的保護,文件加密技術(shù)也就隨之產(chǎn)生。文件的加密主要是由加密算法實現(xiàn),加密算法有多種,本程序設(shè)計對文件的加密使用的是最基礎(chǔ)的異或加密算法與防射函數(shù)加密算法共同對文件進行雙層加密。加密技術(shù)是電子商務(wù)采取的主要安全保密措施,是最常用的安全保密手段,利用技術(shù)手段把重要的數(shù)據(jù)變?yōu)閬y

2、碼(加密)傳送,到達目的地后再用相同或不同的手段還原(解密)。加密技術(shù)包括兩個元素:算法和密鑰。算法是將普通的文本(或者可以理解的信息)與一竄數(shù)字(密鑰)的結(jié)合,產(chǎn)生不可理解的密文的步驟,密鑰是用來對數(shù)據(jù)進行編碼和解碼的一種算法。在安全保密中,可通過適當?shù)拿荑€加密技術(shù)和管理機制來保證網(wǎng)絡(luò)的信息通訊安全.C語言具有簡單、安全、可移植、面向?qū)ο?、健壯、多線程、體系結(jié)構(gòu)中立、解釋執(zhí)行、高性能、分布式和動態(tài)等主要特點。本程序充分利用C語言的特點,針對當下社會比較重視的文件加密,設(shè)計了本程序。使用本程序可以對txt,word等多種文件進行加密解密,使用便捷實用,功能完善,滿足了用戶對文件安全性的需求。目

3、錄一、系統(tǒng)環(huán)境- 2 -二、 設(shè)計目的- 2 -三、總體設(shè)計- 3 -四、詳細設(shè)計- 4 -4.1加密算法- 4 -4.2系統(tǒng)調(diào)用- 4 -五、調(diào)試與測試- 6 -六、遇到的問題及解決方案- 8 -七、程序源代碼- 8 -心得體會- 12 -參考文獻- 13 - 一、系統(tǒng)環(huán)境 Windows平臺下安裝VMware虛擬機來搭建Linux平臺,操作系統(tǒng)環(huán)境是Red Hat Linux 9,語言開發(fā)環(huán)境是Linux的GNU C或C+。 硬件環(huán)境:計算機一臺,局域網(wǎng)環(huán)境軟件環(huán)境:虛擬機下的Red Hat Linux 92、 設(shè)計目的學(xué)習(xí)計算機軟件技術(shù),特別是計算機操作系統(tǒng)技術(shù),除了需要刻苦努力外,還需

4、要掌握軟件和操作系統(tǒng)的原理與設(shè)計技巧。如何學(xué)習(xí)和掌握操作系統(tǒng)技術(shù)的原理與實際技巧呢?除了聽課和讀書之外,最好的方法恐怕就是在實踐中練習(xí)。例如,自己設(shè)計一個小型操作系統(tǒng),多使用操作系統(tǒng),多閱讀和分析操作源代碼等。但由于我們的條件和學(xué)時有限,在理論學(xué)習(xí)過程中沒有給同學(xué)們提供更多的實驗機會。本操作系統(tǒng)課程設(shè)計,是給同學(xué)們提供一個集中實驗的機會。本次課程設(shè)計文件加密存儲要實現(xiàn)以下要求: (1)利用文件系統(tǒng)的系統(tǒng)調(diào)用編程對文件的內(nèi)容進行加、解密; (2)要求程序從環(huán)境的命令行攜帶4個參數(shù)。第一個是文件名,第二個是操作方式,第三個是密鑰,第四個是加密鑰循環(huán)使用長度。其中后兩個參數(shù)是可以忽略,但對忽略的情況

5、要提供缺省值; (3)要求最后實現(xiàn)對文件的加密轉(zhuǎn)儲,或通過改道的辦法進行轉(zhuǎn)儲。對于已加密的文件可以進行解密顯示或解密后轉(zhuǎn)儲。形成加密或解密文件后要刪除原來的文件; (4)建議加密過程使用按字符進行異或的方式處理,也可以是仿射加密方式,比如把所有的字符做一個平移變換:A-àA+C(A為任意字母表中的字母,C為常數(shù),為了防止越界或溢出,可以改造其為A-à(A+C)MOD 256),這里要提醒的是,要注意逆變換; (5)設(shè)計者也可以提供自己的加密方式。三、總體設(shè)計 實現(xiàn)對文件的加密與解密,要求有圖形用戶界面。細則如下 1.能夠?qū)σ粋€文件進行加密; 2.加密后生成一個新文件為“an

6、ma”,并刪除源文件; 3.能將加密生成的文件還原成原文件名為“mingma”。配置默認循環(huán)長度加密操作是否加密開始程序鍵盤接收參數(shù)配置默認的密鑰與循環(huán)長度Argc<3Argc=3Argc=4提示錯誤解密操作是否解密結(jié)束YNNYNNYNNYNNNY N四、詳細設(shè)計4.1加密算法本設(shè)計采用按字符異或與防射加密函數(shù)聯(lián)合的加密算法對文檔進行加密形成密文,而后,用同樣的算法配合密鑰和密鑰循環(huán)長度可以對密文進行解密。程序從命令行攜帶文件名(in)、操作方式(Op)、密鑰(pwd)、加密鑰循環(huán)使用長度(length)四個參數(shù),其中pwd和length可以忽略,程序為忽略的情況提供了缺省值。若命令行帶

7、入的參數(shù)少于兩個,即沒有參數(shù)或只有第一個參數(shù),程序提供了輸入塊對四個參數(shù)進行輸入。4.2系統(tǒng)調(diào)用int main(int argc,char *argv)argc 是外部命令參數(shù)的個數(shù),argv 存放各參數(shù)的內(nèi)容.在運行程序以后,操作系統(tǒng)會自動將參數(shù)傳給你。例如編譯好的程序叫做program.exe 你運行program a b 這個時候,argc = 3 argv0 = "program" argv1 = "a" argv2 = "b"fopen ( string filename, string mode)fopen函數(shù)用來打開一

8、個文件,其調(diào)用的一般形式為:文件指針名=fopen(文件名,使用文件方式); 其中,“文件指針名”必須是被說明為FILE 類型的指針變量; “文件名”是被打開文件的文件名;“使用文件方式”是指文件的類型和操作要求。“文件名”是字符串常量或字符串數(shù)組。文件使用方式意義:“rt” 只讀打開一個文本文件,只允許讀數(shù)據(jù) “wt” 只寫打開或建立一個文本文件,只允許寫數(shù)據(jù) “at” 追加打開一個文本文件,并在文件末尾寫數(shù)據(jù) “rb” 只讀打開一個二進制文件,只允許讀數(shù)據(jù) “wb” 只寫打開或建立一個二進制文件,只允許寫數(shù)據(jù)“ab” 追加打開一個二進制文件,并在文件末尾寫數(shù)據(jù) “rt+” 讀寫打開一個文本

9、文件,允許讀和寫 “wt+” 讀寫打開或建立一個文本文件,允許讀寫 “at+” 讀寫打開一個文本文件,允許讀,或在文件末追加數(shù)據(jù)“rb+” 讀寫打開一個二進制文件,允許讀和寫“wb+” 讀寫打開或建立一個二進制文件,允許讀和寫“ab+” 讀寫打開一個二進制文件,允許讀,或在文件末追加數(shù)據(jù)fputc(char ch,FILE *fp) 作用: 把一個字符寫到磁盤文件上去,即將字符ch輸出到fp所指向的文件中去。 返回值:成功,返回值就是輸出的字符; 失敗,返回EOF(-1)。fgetc(FILE *fp) 作用:從指定的文件讀入一個字符,即從fp所指向的文件中讀入一個字符。 返回值:成功,返回值

10、所得到的字符; 失敗,返回EOF(-1)。feof(FILE *fp) 作用:檢查文件是否結(jié)束。 返回值:遇文件結(jié)束符返回非零值,否則返回0。五、調(diào)試與測試1新建文件和程序2對文件進行加密加密后產(chǎn)生一個新的文件“anma”3對文件進行解密運行后產(chǎn)生一個新的文件“mingma” 六、遇到的問題及解決方案1.linux系統(tǒng)下如何進行編程以及如何運行程序代碼 解決方法:通過網(wǎng)上百度以及從圖書館借閱的資料逐漸了解并認識Linux系統(tǒng),從而進一步在Linux環(huán)境下進行程序設(shè)計2.在陌生環(huán)境下如何確保程序的正確性 解決方案:先把在Linux系統(tǒng)下用GUNC編寫的程序在vc+6.0環(huán)境下編譯運行,確保程序可

11、以進行調(diào)試,然后再移植到Linux環(huán)境中。七、程序源代碼#include<stdio.h>#include<stdlib.h>#include<string.h>void jiami(char *in,char *pwd,int length);/*函數(shù)聲明*/void jiemi(char *in,char *pwd,int length);/*函數(shù)聲明*/int main(int argc,char * argv) char in30;/*需要加密或解密的文件名*/ int length; /*加密鑰循環(huán)使用長度*/ char pwd8;/*加密鑰*/

12、char Op10;/*操作方式*/ if(argc<3) /*如果從命令行帶入的參數(shù)少于兩個,剛提示輸入*/ printf("You must enter filename and Operation mode!n"); printf("Input filename:n"); scanf("%s",in); printf("Input Operation mode:n"); scanf("%s",Op); printf("Enter password:n"); sca

13、nf("%s",pwd); printf("Input length:n"); scanf("%d",&length); else if(argc=3) /*命令行帶兩個參數(shù),后兩個忽略,則給后兩個參數(shù)提供缺省值pwd="00000000",length=8*/ strcpy(in,argv1); strcpy(Op,argv2); strcpy(pwd,"00000000"); length=8; else if(argc=4)/*若從命令行帶入三個參數(shù),剛對length提供缺值8*/

14、 strcpy(in,argv1); strcpy(Op,argv2); strcpy(pwd,argv3); length=8; else strcpy(in,argv1); strcpy(Op,argv2); strcpy(pwd,argv3); length=(int)argv4-48; if(strcmp("jiami",Op)=0) jiami(in,pwd,length);/*調(diào)用加密*/ else if(strcmp("jiemi",Op)=0) jiemi(in,pwd,length);/*調(diào)用解密*/ else printf("

15、;Input error!");void jiami(char *in,char *pwd,int length)/*加密*/ FILE *fp1,*fp2; char ch;int a99; int j=0;int i=0; fp1=fopen(in,"rb");/*為輸入打開一個二進制文件*/ if(fp1=NULL) printf("Cannot open in-file!n"); exit(1); fp2=fopen("anma.txt","wb");/*為讀寫建立一個新的二進制文件*/ if(f

16、p2=NULL) printf("Cannot open or create output-file!n"); exit(1); ch=fgetc(fp1); while(!feof(fp1) ai=ch-'a' / 字符轉(zhuǎn)換為數(shù)字ai=(11*ai+6)%26;/ 仿射加密函數(shù)ch=ai+'a' / 數(shù)字轉(zhuǎn)換為字符i+;fputc(chpwdj>=length-1?j=0:j+,fp2);/*按加密方法進行解密*/ ch=fgetc(fp1); fclose(fp1);remove(in); fclose(fp2);void jiem

17、i(char *in,char *pwd,int length) /*解密*/ FILE *fp1,*fp2; char ch; int j=0;int i=0;int a99; fp1=fopen(in,"rb");/*為輸入打開一個二進制文件*/ if(fp1=NULL) printf("Cannot open in-file!n"); exit(1); fp2=fopen("mingma.txt","wb");/*為讀寫建立一個新的二進制文件*/ if(fp2=NULL) printf("Canno

18、t open or create output-file!n"); exit(1); ch=fgetc(fp1); while(!feof(fp1) ch=chpwdj>=length-1?j=0:j+;ai=ch-'a' / 字符轉(zhuǎn)換為數(shù)字ai=(19*ai+16)%26;/ 仿射解密函數(shù)ch=ai+'a' / 數(shù)字轉(zhuǎn)換為字符i+;fputc(ch,fp2); ch=fgetc(fp1); fclose(fp1);remove(in); fclose(fp2); 心得體會 通過此次課程設(shè)計,使我更加扎實的掌握了有關(guān)C方面的知識與Linux下C編

19、程的知識,在設(shè)計過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識欠缺和經(jīng)驗不足。實踐出真知,通過親自動手制作,使我們掌握的知識不再是紙上談兵。過而能改,善莫大焉。在課程設(shè)計過程中,我們不斷發(fā)現(xiàn)錯誤,不斷改正,不斷領(lǐng)悟,不斷獲取。最終的檢測調(diào)試環(huán)節(jié),本身就是在踐行“過而能改,善莫大焉”的知行觀。 這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多問題,最后不斷實驗和查找資料后,終于游逆而解。在今后社會的發(fā)展和學(xué)習(xí)實踐過程中,一定要不懈努力,不能遇到問題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問題所在,然后一一進行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上劈荊斬棘,而不是知難而退,那樣永遠不可能收獲成功,收獲喜悅,也永遠不可能得到社會及他人對你的認可! 這次課程,給我很多專業(yè)知識以及專業(yè)技能上的提升,同時,設(shè)計讓我感觸很深。使我對抽象的理論有了具體的認識。通過這次課程設(shè)計,我掌握了Linux下C的編程方法和測試;熟悉了Linux的編程環(huán)境以及相關(guān)工具的使用。 我認

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論