




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、蘭州理工大學課程設計華文行楷,加粗,28計算機與通信學院課程設計說明書此處寫畢業(yè)設計的題目,黑體、小一、加粗文本文檔的加密與解密 作 者:王念政 學 號:11700230 專 業(yè):軟件技術 班 級:軟件二班 指導教師:高瑋軍 答辯時間:2012年6月25日20文本文檔的加密與解密姓名:王念政學號:11700230 摘 要隨著網(wǎng)絡技術的不斷發(fā)展,人們的個人信息、網(wǎng)絡間的文件傳遞、電子商務等方面都需要大力的保護,文件加密技術也就隨之產(chǎn)生。文件的加密主要是由加密算法實現(xiàn),加密算法有多種,常見的有RSA、DES、MD5等。但是這些算法雖然原理簡單,但具體實現(xiàn)起來卻非常繁瑣復雜,故而本程序設計對文件的加
2、密使用的是最基礎的異或加密算法。Java語言具有簡單、安全、可移植、面向?qū)ο?、健壯、多線程、體系結構中立、解釋執(zhí)行、高性能、分布式和動態(tài)等主要特點。Java是一門很優(yōu)秀的編程語言,是目前軟件設計中極為健壯的編程語言。Java不僅可以用來開發(fā)大型的應用程序,而且特別適合于Internet的應用開發(fā)。Java確實具備了“一次寫成,處處運行”的特點,所以,Java已經(jīng)成為網(wǎng)絡時代最重要的編程語言之一。本程序充分利用Java語言的特點,針對當下社會比較重視的文件加密,設計了本程序。使用本程序可以對txt,word等多種文件進行加密解密,使用便捷實用,功能完善,滿足了用戶對文件安全性的需求。關鍵詞:JA
3、VA ; 加密; 解密;目 錄一、課設任務及要求1二、需求分析1三、設計思路1四、詳細設計24.1程序流程圖24.2圖形用戶界面模塊34.3加密操作模塊44.4解密操作模塊54.5文件保存模塊54.6文件選擇模塊6五、運行調(diào)試與分析討論85.1加密85.2 解密125.3分析討論13六、設計體會與小結14參考文獻15一、課設任務及要求任務:圖形化界面(GUI)編程,編寫一個加密與解密程序 要求:(1)采用圖形用戶界面(2)給定任意一個文本文件,進行加密,生成另一個文件(3)對加密后的文件還原(解密)二、需求分析基本要求:1.用圖形用戶界面實現(xiàn),建立菜單。2. 給定任意一個文本文件,進行加密,生
4、成另一個文件。3對加密后的文件還原。分析如下:1向圖形用戶界面中添加組件。2設置各個組件的布局。3.添加窗口事件。4. 查找讀入及寫入文件,并顯示。5.加密功能實現(xiàn)。6.解密功能實現(xiàn)。三、設計思路本程序采用傳統(tǒng)的異或加密算法,沒有采用DES算法,但對于世界上公認的DES是一種分組加密算法,是以64位為分組對數(shù)據(jù)加密。64位一組的明文從算法的一端 輸入,64位的密文從另一端輸出。密鑰的長度為56位(密鑰通常表示為64位的數(shù),但每個第8位都用作奇偶檢驗,可以忽 略)。密鑰可以是任意的56位數(shù),且可以在任意的時候改變。 本程序采用的算法與DES相同的一點是:都是一個對稱算法:及加密和解密用的是同一個
5、算法。我們也許知道公認的DES算法的工作過程,那就是:若Mode為加密,則用Key對數(shù)據(jù)Data進行加密,生成Data的密碼 形式(64位)作為DES的輸出結果;若Mode為解密,則用Key對密碼形式的數(shù)據(jù)Data解密,還 原為Data的明碼形式(64位)作為DES的輸出結果。但是,重要的是本程序首先經(jīng)“打開”菜單項,進入文件選擇模塊,讀取字符流,輸出文本文檔后,在一個數(shù)組中,對字符進行異或運算,從而達到加密的效果。在通信網(wǎng)絡的兩端,雙方約定了一致的Key,在通信的源點用Key對核心數(shù)據(jù)進行DES加密 ,然后以密碼形式通過公共通信網(wǎng)(如電話網(wǎng))傳輸?shù)酵ㄐ啪W(wǎng)絡的終點,數(shù)據(jù)達到目的 地后,用同樣的
6、Key對密碼數(shù)據(jù)進行解密,便再現(xiàn)了明碼形式的核心數(shù)據(jù)。這樣便保證了核 心數(shù)據(jù)(如PIN,MAC等)在公共通信網(wǎng)中傳輸?shù)陌踩院涂煽啃?。通過定期在通信網(wǎng)絡的源 端和目的端同時改用新的Key,便能更進一步提高數(shù)據(jù)的保密性,這正是現(xiàn)在金融界交易網(wǎng) 絡的流行作法。 簡單地說,DES算法只不過是加密的其中一種技術,通過一個初始置換,將明文分組分成左半部分和右半部分,各32位 長。然后進行16輪相同的運算,這些相同的運算被稱為函數(shù)f,在運算過程中數(shù)據(jù)和密 鑰相結合。經(jīng)過16輪運算后左、右部分在一起經(jīng)過一個置換(初始置換的逆置換),這樣算 法就完成了。 本程序雖然沒有采用此算法,而是采用眾所周知的與DES有
7、相似之處的異或算法,實際上是降低了程序的復雜度,使其更清晰,但功能依舊很強大,可見優(yōu)勢也是很多的。四、詳細設計4.1程序流程圖該程序的模塊調(diào)用十分簡單明了,所以主程序的運行也很清晰,以下就是主程序的詳細流程圖,如圖4-1所示開始彈出文件加密器對話框點擊“文件”菜單下的“打開”,獲得文件對顯示在瀏覽窗口的“文件”加密生成加密文件點擊“保存”,選擇路徑,生成新文件,并以“.txt”命名點擊“文件”菜單下的“打開”,獲得加密后的文件對顯示在瀏覽窗口的“文件”解密生成解密文件結束圖4-1流程圖4.2圖形用戶界面模塊在圖形用戶界面,設置兩個面板,并分別設置顯示其組件的布局。設置兩個菜單項,分別為“打開”
8、和“保存”;設置兩個按鈕,分別為“加密”和“解密”;創(chuàng)建一個文本區(qū),用一個標簽注明“文件瀏覽窗口”,這就是整個圖形用戶界面。 此外,還添加了一個窗口事件windowClosing,可以關閉運行的程序。窗口事件的代碼實現(xiàn):addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); );4.3加密操作模塊本程序采用簡單的加密算法,即把從文本區(qū)獲得的文本文件,初始化,存放到一個數(shù)組中,然后進行異或運算,把結果重新存放于該數(shù)組中,從而顯現(xiàn)在“文件瀏覽窗口”中。代碼實現(xiàn):if
9、(e.getSource()=button1)char a=texta.getText().toCharArray();/*把texta中獲得的文本,進行初始化,與原字符串長度相等,并將該字符串對象的全部字符復制到該數(shù)組a中*/texta.setText(null);int n;char secret=' 'for(int i=0;i<a.length;i+)char c=(char)(secretai ;/進行異或運算) texta.append(""+c);4.4解密操作模塊 解密操作其實同加密操作相同,依舊首先打開加密后的文件,使其顯示在文本區(qū)中
10、,再同樣對數(shù)組里的元素進行初始化,進行異或運算,即可得到解密后的文件,再顯示到“文件瀏覽窗口”中。 入口參數(shù):指定文件路徑代碼實現(xiàn):if(e.getSource()=button2)char a=texta.getText().toCharArray();texta.setText(null);int n;char secret=' 'for(int i=0;i<a.length;i+)char c=(char)(secretai);/再次異或運算,即還原texta.append(""+c);4.5文件保存模塊本程序最大的特點就是:可以選擇是否保存加密
11、后的文本文件。因為加密后的文件先顯示在文本區(qū)中,之后選擇菜單項“保存”,即可彈出“保存對話框”,進行查找寫入文件,寫入字符流,從而實現(xiàn)保存。代碼實現(xiàn):if(e.getSource()=itemSave)/查找寫入的文件filedialog_save.setVisible(true);if(filedialog_save.getFile()!=null)tryFile file=new File(filedialog_save.getDirectory(),filedialog_save.getFile();FileWriter tofile=new FileWriter(file);/寫入字符
12、流BufferedWriter out=new BufferedWriter(tofile);out.write(texta.getText(),0,(texta.getText().length();out.close();tofile.close();catch (IOException e2)4.6文件選擇模塊 同上個文件保存模塊類似,依舊在選擇菜單項“打開”后,查找讀入文件,讀取字符流,彈出“打開對話框”,從而可實現(xiàn)獲取文件。 出口值:被選文件的路徑代碼實現(xiàn):public void actionPerformed(ActionEvent e)/查找讀入文件if(e.getSource(
13、)=itemOpen)filedialog_load.setVisible(true);texta.setText(null);String s;if(filedialog_load.getFile()!=null)tryFile file=new File(filedialog_load.getDirectory(),filedialog_load.getFile();FileReader file_reader=new FileReader(file);/讀取字符流BufferedReader in=new BufferedReader(file_reader);while(s=in.re
14、adLine()!=null)texta.append(s+'n');in.close();file_reader.close();catch (IOException e1)五、運行調(diào)試與分析討論5.1加密 首先在我機器C盤文件夾名為1的文件夾離創(chuàng)建一個名為Example.txt文本文件用做測試。 運行程序,彈出如圖5-1的對話框圖5-1運行程序點擊“文件”,選擇“打開”,即彈出“打開”對話框,選擇一個文本文件,如圖5-2。 圖 5-2選擇加密文件 選擇文件后,即可在“文件瀏覽窗口”中顯示文本的信息,點擊“加密”按鈕,即可在“文件瀏覽窗口”看到加密后的文件(如圖5-3)。圖
15、5-3 生成加密文件對加密后的密文進行保存,選擇“文件”下的“保存”,即可彈出“保存”對話框,選擇路徑,即可保存,如圖5-4和5-5所示。 圖 5-4 保存加密文件圖 5-5 瀏覽加密文件5.2 解密解密操作中對文件選擇,密碼輸入和加密操作是一樣的。將剛剛加密的程序進行解密,打開密文文件,選擇“加密與解密”窗口下“解密”按鈕,點擊,即可解密,如圖5-6所示。圖5-6 加密5.3分析討論在程序設計之初,考慮的是如何實現(xiàn)DES算法,但發(fā)現(xiàn) DES算法對于本次小程序來說,的確過于繁瑣,但當我們發(fā)現(xiàn)采用簡化后的DES算法-異或算法也可實現(xiàn)本功能,所以以后大大減少了工作量,可以說用Java語言是程序?qū)崿F(xiàn)
16、的一個成功之處。Java語言具有簡單、安全、可移植、面向?qū)ο蟆⒔?、多線程、體系結構中立、解釋執(zhí)行、高性能、分布式和動態(tài)等主要特點。而且,我覺得隨著科技的不斷進步,Java語言的優(yōu)越性會不斷地被挖掘出來,因為Java語言也是有生命的,它是不斷被人們的需求演變的越來越強大,這些,我覺得不言而喻。但往后,我想只有在不斷的使用以后才能體會到,在發(fā)現(xiàn)Java擁有秘密密鑰工廠后更是感受到它的強大。Java的JDK幫助文檔對于使用Java編程是非常有幫助的,在我們編程過程中,遇到的一些不清楚的地方,都是靠它才得以解決,同時對Java語言的了解也更方便、深入了。程序利用Java圖形界面設計了一個方便用戶操作
17、的窗口,使得程序運行的時候更想是個封裝好的運用程序,不過我知道離這個還是有很大距離的,而程序所要提升空間非常大,現(xiàn)在界面所能實現(xiàn)的也就幾個操作而已。但我們一致認為:如果程序要再做的強大點,可以引入其他的加密算法共用戶選擇,還可以設計成同時對多個文件進行加密,不過這只能放到我們課下對此進行更深一步的研究了。程序的每個模塊實現(xiàn)的功能還算完整,層次間的調(diào)用還是比較清晰的,各個功能也得到了基本的實現(xiàn)。算法的時空分析,其實就是指算法的空間復雜度(包括時間復雜度和空間復雜度),其作用: 時間復雜度是度量算法執(zhí)行的時間長短;而空間復雜度是度量算法所需存儲空間的大小。程序的時間復雜度理論上是算不出來的,必須經(jīng)
18、過必須上機運行測試才能知道。但我們不可能也沒有必要對每個算法都上機測試。但我們可以知道本算法其實是DES算法的簡化,所以,肯定只需知道哪個算法花費的時間多,哪個算法花費的時間少就可以了,并且,一個算法花費的時間與算法中語句的執(zhí)行次數(shù)成正比例,DES對64位的明文分組進行操作,通過一個初始置換,將明文分組成左半部分Li和右半部分Ri,各32位長。然后進行16輪完全相同的運算,本程序直接采用數(shù)組,對其中的字符循環(huán)異或,只需進行一輪,所以時間復雜度T(n)是比較小的??臻g復雜度O(n)也是一樣的,它是對程序占用內(nèi)存的分析,由公式T(n)=O(f(n)知,時間復雜度與空間復雜度均為O(n)。六、設計體
19、會與小結這次課程設計的要求并不多,只要實現(xiàn)加密與解密功能,而且只需要采用一種加密算法,但是為了本次課程設計,我們組也搜索了大量的資料,并根據(jù)在課堂上,書本上,老師講過的知識,結合自身主觀和客觀因素,制定了本次課程設計的目標,并齊心協(xié)力,完成了此次設計。通過本次的課程設計,我們還知道了許多自身存在的不足,例如僅掌握了一種加密算法,但在日益發(fā)達的社會商業(yè)等領域,加密解密需要做的還非常多,并且Java領域博大精深,我們現(xiàn)在只是學到了它的一點皮毛而已,所以還需多多努力。但是通過這些我還是學到了很多東西,先不說其他的,我最起碼最基礎的加密算法,而且以后可以運用到自己想要保密的文件當中去。通過這次課程設計
20、,我用JAVA語言實現(xiàn),我這是我對JAVA語言有了根深的了解鞏固了以前學到的知識,也學習到了新的知識,課程設計雖然暫告一個段落,但我們學習Java的步伐不會終止。參考文獻(1)丁振凡.Java語言實用教程北京郵電大學出版社 (2)耿祥義.Java2實用教程清華大學出版社(3)趙付青.Java面向?qū)ο蟪绦蛟O計國防工業(yè)出版社.(4)耿祥義.Java課程設計清華大學出版社 附錄 源代碼import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.*;class Myframe extends Frame i
21、mplements ActionListener FileDialog filedialog_save,filedialog_load;Button button1,button2;Label label;MenuBar bar;Menu menu;MenuItem itemOpen,itemSave;TextArea texta;Myframe(String s) /創(chuàng)建對話框super(s); texta= new TextArea(38,160);button1= new Button("加密");button2= new Button("解密")
22、;menu=new Menu("文件");itemOpen=new MenuItem("打開");itemSave=new MenuItem("保存");label=new Label("文件瀏覽窗口");itemOpen.addActionListener(this);itemSave.addActionListener(this);button1.addActionListener(this);button2.addActionListener(this);filedialog_save=new FileDia
23、log(this,"保存文件對話框",FileDialog.SAVE);filedialog_load=new FileDialog(this,"打開文件對話框",FileDialog.LOAD);filedialog_save.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)filedialog_save.setVisible(false););filedialog_load.addWindowListener(new WindowAdapter(
24、)public void windowClosing(WindowEvent e)filedialog_load.setVisible(false););Box box1=Box.createHorizontalBox();/創(chuàng)建一個從左到右顯示其組件的 box1;Box box2=Box.createVerticalBox();/創(chuàng)建一個從上到下顯示其組件的 box2; Box box3=Box.createVerticalBox();Box boxbase=Box.createVerticalBox();Panel panel1=new Panel();Panel panel2=new P
25、anel();setMenuBar(bar=new MenuBar();bar.add(menu);menu.add(itemOpen); menu.add(itemSave);panel1.add(button1);panel1.add(button2);box1.add(panel1);box2.add(label);panel2.add(texta);box3.add(panel2);boxbase.add(box1);boxbase.add(box2);boxbase.add(box3);add(boxbase);setLayout(new FlowLayout();setBounds
26、(100,0,1200,750);setVisible(true); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); );/“關閉”窗口事件;public void actionPerformed(ActionEvent e)/查找讀入文件if(e.getSource()=itemOpen)filedialog_load.setVisible(true);texta.setText(null);String s;if(filedialog_load.ge
27、tFile()!=null)tryFile file=new File(filedialog_load.getDirectory(),filedialog_load.getFile();FileReader file_reader=new FileReader(file);/讀取字符流BufferedReader in=new BufferedReader(file_reader);while(s=in.readLine()!=null)texta.append(s+'n');in.close();file_reader.close();catch (IOException e1)if(e.getSource()=itemSave)/查找
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院感染防控應急處置預案
- 公司股權分配及管理辦法
- 建筑工程項目報告
- 垃圾焚燒發(fā)電前景如何
- 電動車公共充電樁使用方法
- 基于語音控制的智能家居
- 安全防護和文明施工措施
- 工程項目預算及費用統(tǒng)計表
- 新能源車輛推廣與應用戰(zhàn)略研究報告
- 銀行業(yè)務流程優(yōu)化與風控管理方案
- 中國古代文學史-史記講義
- 尿動力學檢查操作指南2023版
- 化學核心素養(yǎng)的課堂教學-基于核心素養(yǎng)的高中化學教學 課件
- DB31T 1137-2019 畜禽糞便生態(tài)還田技術規(guī)范
- 張居正改革-完整精講版課件
- excel-操作技巧培訓課件
- 腹膜透析的原理和應用講課課件
- 中北大學火炮概論終極版
- 2022年CAD快捷鍵-CAD常用快捷鍵命令大全
- 流感病人的護理ppt課件
評論
0/150
提交評論