文件的加密解密系統(tǒng)設(shè)計(jì)_第1頁(yè)
文件的加密解密系統(tǒng)設(shè)計(jì)_第2頁(yè)
文件的加密解密系統(tǒng)設(shè)計(jì)_第3頁(yè)
文件的加密解密系統(tǒng)設(shè)計(jì)_第4頁(yè)
文件的加密解密系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

文件加密解密系統(tǒng)設(shè)計(jì)內(nèi)容摘要:作為保障數(shù)據(jù)數(shù)據(jù)平安的一種方式,對(duì)于信息的加密技巧起源于歐洲,最廣為人知的編碼機(jī)器是德國(guó)的GermanEnigma,在第二次世界大戰(zhàn)中德國(guó)人利用它創(chuàng)立了加密信息系統(tǒng),從而解決軍事信息的保密通訊問(wèn)題。隨著信息技術(shù)的開展,人們的文本文件需要更簡(jiǎn)便、平安和可靠的加密管理模式。設(shè)計(jì)一個(gè)基于c語(yǔ)言的文本文件加密及解密軟件,可以方便對(duì)文本文件的加密與解密。本設(shè)計(jì)實(shí)現(xiàn)了文本文件的解密及解密,運(yùn)行軟件之后只需輸入任意一個(gè)文本文件的文件名及后綴名即可對(duì)該文本文件進(jìn)行加密或解密操作。本設(shè)計(jì)的加密與解密系統(tǒng),使用了面向各類文件的方法,運(yùn)用MicrosoftVisualC++6.0實(shí)現(xiàn)具有加密、解密、幫助信息、讀取文本文件、顯示結(jié)果、退出等功能的文件加密與解密系統(tǒng)。關(guān)鍵詞:C語(yǔ)言程序設(shè)計(jì)密碼文件加密與解密FileencryptionanddecryptionsystemdwsignAbstract:Asawayofdata,datasecurity,forinformationencryptiontechniqueoriginatedinEurope,themostwellknownofthecodingmachineisGermanGermanEnigma,ChinaandGermanyduringthesecondworldwarpeopleuseittocreatetheencryptedinformationsystem,tosolvetheproblemofmilitaryinformationconfidentialcommunication.Withthedevelopmentofinformationtechnology,people'stextfilesthatneedtobemoreconvenient,safeandreliableencryptionmanagementmode.Designatextfileencryptionanddecryptionsoftwarebasedonclanguage,canbeconvenienttotextfileencryptionanddecryption.Thisdesignimplementsthedeclassificationofatextfileanddecryption,runningsoftwaresimplytypeanytextfileafterfilenameandextensioncanencryptordecryptoperationonthetextfilesThisdesignofencryptionanddecryptionsystem,usingthemethodforallkindsofdocuments,UsingMicrosoftVisualc++6.0Implementedwithencryption,decryption,helpinformation,readsthetextfile,displaytheresults,exitfunctionsuchasfileencryptionanddecryptionsystem.Keyword:ClanguageProgramdesignCodeFileencryptionanddecryption

目錄前言 11設(shè)計(jì)目的 11.1為什么要對(duì)文件進(jìn)行加密和解密? 11.2文件的加密解密 11.2.1移位加密和解密 11.2.2二進(jìn)制加密和解密 22C語(yǔ)言 22.1什么是C語(yǔ)言? 22.2C語(yǔ)言開展歷史簡(jiǎn)單介紹 22.3用C語(yǔ)言程序設(shè)計(jì)的優(yōu)點(diǎn) 23設(shè)計(jì)流程圖 33.1主函數(shù)main()執(zhí)行流程圖 33.2加密前的文件內(nèi)容 43.3主菜單 43.4加密解密操作 43.4.1選擇移位加密解密輸入2,輸入1加密 4選擇移位加密解密輸入2,輸入2解密 5選擇二進(jìn)制加密解密輸入3,輸入1加密 6選擇二進(jìn)制加密解密輸入3,輸入2解密 63.5退出系統(tǒng) 74結(jié)束語(yǔ) 7附錄 8參考文獻(xiàn) 15文件加密解密系統(tǒng)設(shè)計(jì)前言本程序旨在訓(xùn)練根本編程能力,了解管理信息系統(tǒng)的開發(fā)流程,熟悉C語(yǔ)言的文件和結(jié)構(gòu)數(shù)組的各種根本操作。本程序中涉及結(jié)構(gòu)體、數(shù)組、文件等方面的知識(shí)。通過(guò)本程序的訓(xùn)練,能對(duì)C語(yǔ)言的文件操作有一個(gè)更深刻的了解,掌握利用數(shù)組存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)文件加密解密的原理,為進(jìn)一步開發(fā)出高質(zhì)量的加密解密系統(tǒng)打下堅(jiān)實(shí)的根底。1設(shè)計(jì)目的隨著科技的進(jìn)步和信息產(chǎn)業(yè)的飛速開展,文件的保密也成為人們生活中所必須的,本C++文件加密解密主要是利用計(jì)算機(jī)進(jìn)行文件的加密和解密操作,根源程序包涵移位加密解密和二進(jìn)制加密解密。本程序是利用指針實(shí)現(xiàn)此文件加密解密系統(tǒng)。1.1為什么要對(duì)文件進(jìn)行加密和解密?隨著社會(huì)的開展人們把隱私保護(hù)和平安的設(shè)置看得越來(lái)越重要。其中文件的加密、解密就是一種最簡(jiǎn)單而有效的保護(hù)方式,它在我們的日常生活中扮演著重要的角色。1.2文件的加密解密現(xiàn)在主要有兩種加密方式,一種是移位加密解密,第二種是二進(jìn)制加密解密。它的特點(diǎn)是文件加密和解密使用相同的密鑰,即加密密鑰也可以用作解密密鑰,這種方法在密碼學(xué)中叫做對(duì)稱加密算法,稱加密算法使用起來(lái)簡(jiǎn)單快捷、密鑰較短、且破譯困難。移位加密和解密加密的時(shí)候運(yùn)用C語(yǔ)言知識(shí),將所遇到的字符進(jìn)行移位操作。解密的時(shí)候,根據(jù)加密的方法,反過(guò)來(lái)解密,即將加密字符進(jìn)行移位操作。學(xué)會(huì)運(yùn)用文件,對(duì)任意文件進(jìn)行加密解密操作,先翻開文件進(jìn)行加密解密操作,還要將文件顯示出來(lái),最后關(guān)閉文件。二進(jìn)制加密和解密加密的時(shí)候運(yùn)用C語(yǔ)言知識(shí),將所遇到的字符進(jìn)行移位操作。解密的時(shí)候,根據(jù)加密的方法,反過(guò)來(lái)解密,即將加密字符進(jìn)行移位操作。學(xué)會(huì)運(yùn)用文件,對(duì)任意文件進(jìn)行加密解密操作,先翻開文件進(jìn)行加密解密操作,還要將文件顯示出來(lái),最后關(guān)閉文件。2C語(yǔ)言2.1什么是C語(yǔ)言?C語(yǔ)言是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。它既有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它可以作為系統(tǒng)設(shè)計(jì)語(yǔ)言編寫工作系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛。[1]C語(yǔ)言對(duì)操作系統(tǒng)和系統(tǒng)使用程序以及需要對(duì)硬件進(jìn)行操作的場(chǎng)合,用C語(yǔ)言明顯優(yōu)于其它解釋型高級(jí)語(yǔ)言,有一些大型應(yīng)用軟件也是用C語(yǔ)言編寫的。[2]C語(yǔ)言具有繪圖能力強(qiáng),可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫。它是數(shù)值計(jì)算的高級(jí)語(yǔ)言。[3]2.2C語(yǔ)言開展歷史簡(jiǎn)單介紹早期的操作系統(tǒng)等系統(tǒng)軟件主要是用匯編語(yǔ)言編寫的,依賴于計(jì)算機(jī)硬件,程序的可讀性和可移植性都比擬差。為了提高可讀性和可移植性,最好改用高級(jí)語(yǔ)言,但一般高級(jí)語(yǔ)言難以實(shí)現(xiàn)匯編語(yǔ)言的某些功能,而匯編語(yǔ)言可以直接對(duì)硬件進(jìn)行操作,人們?cè)O(shè)想能否找到一種既具有一般高級(jí)語(yǔ)言特性,又具有低級(jí)語(yǔ)言特性的語(yǔ)言,集它們的優(yōu)點(diǎn)于一身。于是,C語(yǔ)言就在這種情況下應(yīng)運(yùn)而生了,之后成為國(guó)際上廣泛流行的計(jì)算機(jī)高級(jí)語(yǔ)言。它適合于作為系統(tǒng)描述語(yǔ)后來(lái),C語(yǔ)言屢次作了改良,但主要還是在貝爾實(shí)驗(yàn)室內(nèi)部使用。直到1975年UNIX第6版公布后,C語(yǔ)言的突出優(yōu)點(diǎn)才引起人們普遍注意。

言,即用來(lái)寫系統(tǒng)軟件,也可用來(lái)寫應(yīng)用軟件。[4]2.3用C語(yǔ)言程序設(shè)計(jì)的優(yōu)點(diǎn)C語(yǔ)言一共只有32個(gè)關(guān)鍵字,9種控制語(yǔ)句,程序書寫自由,主要用小寫字母表示。它把高級(jí)語(yǔ)言的根本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)。C語(yǔ)言可以象匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最根本的工作單元。[5]C的運(yùn)算符包含的范圍很廣泛,共有種34個(gè)運(yùn)算符。C語(yǔ)言把括號(hào)、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C的運(yùn)算類型極其豐富表達(dá)式類型多樣化,靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其它高級(jí)語(yǔ)言中難以實(shí)現(xiàn)的運(yùn)算。[6]C的數(shù)據(jù)類型有:整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來(lái)實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)類型的運(yùn)算。并引入了指針概念,使程序效率更高。另外C語(yǔ)言具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器。且計(jì)算功能、邏輯判斷功能強(qiáng)大。[7]本程序選擇C語(yǔ)言編寫文件加密與解密源程序是因?yàn)镃語(yǔ)言編程易操作更簡(jiǎn)單,更容易實(shí)現(xiàn),而且易修改,運(yùn)行方法也很簡(jiǎn)單。根據(jù)每條語(yǔ)句后面的注解能夠讓人一目了然,更能讓不懂C語(yǔ)言的人也能輕易運(yùn)行程序3設(shè)計(jì)流程圖3.1主函數(shù)main()執(zhí)行流程圖如圖1所示。輸入1輸入1圖1文件加密解密系統(tǒng)執(zhí)行主流程如圖1所示。在判斷鍵值時(shí),有效的輸入為1-3之間的任意數(shù)值,其他輸入都被視為錯(cuò)誤按鍵。假設(shè)輸入為1,那么調(diào)用exit(0)函數(shù)執(zhí)行退出操作;假設(shè)選擇2,那么調(diào)用yiwei()函數(shù)執(zhí)行移位加密解密操作;假設(shè)選擇3,那么調(diào)用erjinzhi()函數(shù),執(zhí)行二進(jìn)制加密解密操作;假設(shè)輸入為1-3之外的值,那么給出按鍵錯(cuò)誤的提示”Inputerror,Pleaseinputagain!”,并重新讓你重新鍵入值。3.2加密前的文件內(nèi)容利用源程序?qū)冇⑽淖帜傅奈募癶ao.txt”和“mei.txt”進(jìn)行加密和解密運(yùn)算,截圖如下:“hao.txt”的內(nèi)容如圖2所示,“mei.txt”的內(nèi)容如圖3所示。圖2圖33.3主菜單主菜單界面如圖4所示。圖43.4加密解密操作選擇移位加密解密輸入2,輸入1加密輸入翻開文件文件名稱操作〔完整路徑〕:hao.txt再輸入密鑰3,輸入保存解密后文件的名稱〔完整路徑〕x.txt操作如圖5所示。圖5選擇移位加密解密輸入2,輸入2解密輸入翻開文件文件名稱操作〔完整路徑〕:x.txt再輸入密鑰3,輸入保存解密后文件的名稱〔完整路徑〕hao.txt操作如圖6所示。圖63.4.3選擇二進(jìn)制加密解密輸入3,輸入1加密輸入翻開文件文件名稱操作〔完整路徑〕:mei.txt再輸入密鑰3,輸入保存解密后文件的名稱〔完整路徑〕x.txt操作如圖7所示。圖7選擇二進(jìn)制加密解密輸入3,輸入2解密輸入翻開文件文件名稱操作〔完整路徑〕:x.txt再輸入密鑰3,輸入保存解密后文件的名稱〔完整路徑〕mei.txt操作如圖8所示。圖83.5退出系統(tǒng)輸入2,退出系統(tǒng),操作如圖9所示。圖94結(jié)束語(yǔ)通過(guò)這次課程設(shè)計(jì),我學(xué)到了許多東西,在完成設(shè)計(jì)的過(guò)程中也遇到了許多的問(wèn)題,通過(guò)不斷的查資料,和向老師同學(xué)的請(qǐng)教,使得大局部問(wèn)題得到了解決。并且解決問(wèn)題的過(guò)程中我也學(xué)到了很多東西。在設(shè)計(jì)過(guò)程中,主要遇到的問(wèn)題就是文件的操作問(wèn)題,以前學(xué)習(xí)的時(shí)候,對(duì)文件的操作掌握的不是很好,但在做課程設(shè)計(jì)時(shí)會(huì)常常用到,經(jīng)認(rèn)真看書后解決了這個(gè)問(wèn)題。最大問(wèn)題是密碼太多時(shí)會(huì)出現(xiàn)亂碼的問(wèn)題,后用while〔〕函數(shù)解決了。雖然在課程設(shè)計(jì)過(guò)程中修改了很屢次,但程序還是很不完美,有一些問(wèn)題未能解決。比方說(shuō)程序的界面不夠美觀,不夠人性化;在對(duì)密碼的處理上也不好,只能對(duì)英語(yǔ)文本進(jìn)行加密和解密操作也是很大的問(wèn)題,我將在以后的時(shí)間里繼續(xù)努力,不斷充實(shí)自己。希望經(jīng)過(guò)以后的學(xué)習(xí)也能夠?qū)χ形奈臋n進(jìn)行加密和解密操作。附錄源程序:#include<stdio.h>#include<stdlib.h>#defineM1000//預(yù)設(shè)一個(gè)指定文件大小的數(shù)字M,方便以后改變voidyiwei();intmain(){ printf("\n$********本程序只能對(duì)英文文本進(jìn)行加密解密操作,如有不便盡請(qǐng)諒解*****$");//歡送界面 printf("\n"); printf("\n$*******文件移位加密與解密、二進(jìn)制加密與解密*****$");//軟件信息 printf("\n"); printf("\n$*******2011級(jí)通信工程學(xué)院*****$");//歡送界面 printf("\n"); printf("\n$*******通信四班:朱彬文張一帆通信二班:張婷*****$");//歡送界面 printf("\n"); printf("\n$*******歡送使用本軟件,祝您使用愉快*****$");//歡送界面 printf("\n"); printf("\n按enter鍵進(jìn)入主菜單"); getchar();//輸入任意字符后進(jìn)行下一操作 system("cls");//清屏操作 printf("\n$*************本程序只能對(duì)英文文本進(jìn)行加密解密操作,如有不便盡請(qǐng)諒解****$");//歡送界面 printf("\n"); printf("\n$*************1:退出程序輸入***********$");//歡送界面 printf("\n"); printf("\n$*************2:移位加密與解密輸入***********$");//歡送界面 printf("\n");printf("\n$*************3:二進(jìn)制加密與解密輸入***********$");//歡送界面 printf("\n"); printf("\n$*************歡送使用本軟件,祝您使用愉快***********$");//歡送界面 printf("\n請(qǐng)輸入〔1-3〕;"); switch(getchar()) { case'1':exit(0);printf("byebye");break; case'2':yiwei();break; case'3':erjinzhi();break; } return0;}/*****************主函數(shù)結(jié)束*********************//***********調(diào)用移位加密解密函數(shù)*****************/voidyiwei(){ FILE*infile=NULL;//輸入文件指針 FILE*outfile=NULL;//輸出文件指針 intkey;//密鑰 intoperation=0;//操作類型,加密1,解密2 charfilename[100],tempfile[1000],data; while(1) { infile=outfile=NULL; operation=0; //選擇操作類型 while(!(operation==1||operation==2)) { printf("請(qǐng)選擇【加密1解密2】:"); scanf("%d",&operation); //處理非法輸入 if(!(operation==1||operation==2)) printf("選擇有誤,請(qǐng)重新選擇!\n"); } //翻開輸入文件 while(infile==NULL) { printf("\n輸入要翻開的文件文件名稱(完整路徑):"); scanf("%s",filename); //以只讀方式翻開文件流 infile=fopen(filename,"r"); //翻開文件流失敗,重新輸入文件名 if(infile==NULL) printf("\n無(wú)法翻開文件,請(qǐng)檢查文件是否存在后重新輸入!"); } printf("\n輸入密鑰:"); scanf("%d",&key); //輸入密鑰 if(operation==1) printf("\n輸入保存加密后文件的名稱(完整路徑):"); else printf("\n輸入保存解密后文件的名稱(完整路徑):"); scanf("%s",filename); //以讀寫方式翻開輸出文件 outfile=fopen(filename,"w+"); while((data=fgetc(infile))!=EOF)//逐個(gè)字符讀出輸入文件的內(nèi)容 { if(operation==1)//加密 fputc(data+key,outfile); else//解密 fputc(data-key,outfile); } //輸出加密/解密的過(guò)程 if(operation==1) printf("\n加密過(guò)程:"); else printf("\n解密過(guò)程:"); rewind(infile);//文件指針回到文件開始處 while((data=fgetc(infile))!=EOF)//逐個(gè)字符讀出輸入文件的內(nèi)容 printf("%c",data); printf("-->"); rewind(outfile); while((data=fgetc(outfile))!=EOF)//逐個(gè)字符讀出輸入文件的內(nèi)容 printf("%c",data); printf("\n\n"); fclose(infile);//關(guān)閉文件流 fclose(outfile); break; } printf("\n"); printf("\n*-·-·-感謝您的使用,歡送再次使用-·-·-*\n\n");//使用完感謝語(yǔ)! exit(0); }/*****************調(diào)用二進(jìn)制加密解密函數(shù)*********************/interjinzhi(){ FILE*infile=NULL;//輸入文件指針 FILE*outfile=NULL;//輸出文件指針 intkey;//密鑰 intoperation=0;//操作類型,加密1,解密2 charfilename[100],tempfile[1000],data; while(1) { infile=outfile=NULL; operation=0; //選擇操作類型 while(!(operation==1||operation==2)) { printf("請(qǐng)選擇【加密1解密2】:"); scanf("%d",&operation); //處理非法輸入 if(!(operation==1||operation==2)) printf("選擇有誤,請(qǐng)重新選擇!\n"); } //翻開輸入文件 while(infile==NULL) { printf("\n輸入要翻開的文件文件名稱(完整路徑):"); scanf("%s",filename); //以只讀方式翻開文件流 infile=fopen(filename,"r"); //翻開文件流失敗,重新輸入文件名 if(infile==NULL) printf("\n無(wú)法翻開文件,請(qǐng)檢查文件是否存在后重新輸入!"); } //輸入密鑰 printf("\n輸入密鑰:"); scanf("%d",&key); if(operation==1) printf("\n輸入保存加密后文件的名稱(完整路徑):"); else printf("\n輸入保存解密后文件的名稱(完整路徑):"); scanf("%s",filename); //以讀寫方式翻開輸出文件 outfile=fopen(filen

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論