版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
文件加密解密第18頁共18頁1設(shè)計(jì)背景密碼學(xué)是一門古老而深?yuàn)W的學(xué)科,它對(duì)一般人來說是陌生的,因?yàn)殚L期以來,它只在很少的范圍內(nèi),如軍事、外交、情報(bào)等部門使用。計(jì)算機(jī)密碼學(xué)是研究計(jì)算機(jī)信息加密、解密及其變換的科學(xué),是數(shù)學(xué)和計(jì)算機(jī)的交義學(xué)科,也是一門新興的學(xué)科。隨著計(jì)算機(jī)網(wǎng)絡(luò)和計(jì)算機(jī)通訊技術(shù)的發(fā)展,計(jì)算機(jī)密碼學(xué)得到前所未有的重視并迅速普及和發(fā)展起來。在國外,它已成為計(jì)算機(jī)安全主要的研究方向,也是計(jì)算機(jī)安全課程教學(xué)中的主要內(nèi)容。信息技術(shù)的飛速發(fā)展,人們的生活面貌發(fā)生了很大的改變,提高了各類型組織的管理水平和效率,同時(shí)信息技術(shù)也促進(jìn)了社會(huì)的發(fā)展。如何保護(hù)計(jì)算機(jī)信息內(nèi)容的問題,即信息內(nèi)容的保密問題顯得越來越重要。我們經(jīng)常需要一種措施來保護(hù)我們的數(shù)據(jù),防止被一些懷有不良用心的人所看到或破壞。文件加密為我們帶來了幫助,使我們重要的信息和資料都有了很大的安全性。2設(shè)計(jì)目的與意義2.1設(shè)計(jì)目的(1)保密性:防止用戶的標(biāo)識(shí)或數(shù)據(jù)被讀?。唬?)廣泛性:可以對(duì)所有形式的文件進(jìn)行加密解密,如:文檔,圖片,可執(zhí)行文件等;數(shù)據(jù)完整性:防止數(shù)據(jù)被更改,加密解密后不改變?cè)瓟?shù)據(jù)。2.2設(shè)計(jì)意義隨著計(jì)算機(jī)的廣泛應(yīng)用,計(jì)算機(jī)信息的保密問題顯得越來越重要。數(shù)據(jù)保密變換,或密碼技術(shù),是對(duì)計(jì)算機(jī)信息進(jìn)行保護(hù)的最實(shí)用最可靠的方法。設(shè)計(jì)本系統(tǒng)可以對(duì)電腦中的任意文件進(jìn)行加密,保證了計(jì)算機(jī)中信息的安全性、完整性。通過加密自己想加密的文件,防止他人偷窺,有利的保護(hù)了個(gè)人隱私。3概要設(shè)計(jì)3.1需求分析(1)給定任意一個(gè)文本文件,進(jìn)行加密,生成密文,且密文輸入生成另一個(gè)文本文件。(2)對(duì)加密后的文件還原,輸出原來的文本文件。3.2包的描述導(dǎo)入了java.awt;java.awt.event;java.io;javax.swing等包。3.3程序設(shè)計(jì)思路程序先通過文件輸入輸出流讀取電腦中的文件,后通過字符輸入輸出流將文本文件中的內(nèi)容輸出到文本區(qū)域中。接著點(diǎn)擊加密按鈕即可對(duì)文本區(qū)域中的文本內(nèi)容實(shí)現(xiàn)加密,即將這些文本變成密文,這些密文可以保存覆蓋原本的文本文件,也可以保存為新的文件。再點(diǎn)擊解密按鈕就可以將文本區(qū)域的內(nèi)容解密為原來的內(nèi)容,這些內(nèi)容可以保存覆蓋原來的文件,也可以保存為新的文件。4詳細(xì)設(shè)計(jì)4.1類的描述FileSecret類繼承Frame類;可以擴(kuò)展Frame的功能并且可以實(shí)例化的多種功能,這個(gè)類也實(shí)現(xiàn)了ActionListener這個(gè)接口,它是Java中關(guān)于事件處理的一個(gè)接口,ActionListener用于接收操作事件的偵聽器接口。對(duì)處理操作事件感興趣的類可以實(shí)現(xiàn)此接口,而使用該類創(chuàng)建的對(duì)象可使用組件的addActionListener方法向該組件注冊(cè)。在發(fā)生操作事件時(shí),調(diào)用該對(duì)象的actionPerformed方法。4.2界面設(shè)計(jì)界面用Menu類來創(chuàng)建一個(gè)“文件”菜單,然后將菜單放入MenuBar類中,通過MenuBar類的setMenuBar()方法將菜單欄放入窗口中。再創(chuàng)建兩個(gè)MenuItem:“打開”和“保存”,即菜單欄的兩個(gè)按鍵。接著創(chuàng)建兩個(gè)Panel面板和三個(gè)Box輕量容器,將兩個(gè)Button按鈕放入一個(gè)面板,文本區(qū)域TextArea放入一個(gè)面板,再將兩個(gè)面板分別放入一個(gè)Box容器,再將一個(gè)Label放入一個(gè)Box容器,然后將三個(gè)容器放入新定義的一個(gè)Box容器,再將這個(gè)總的容器放入窗口中,并設(shè)定為FlowLayout流水布局,界面顯示如下:圖4-1顯示界面代碼實(shí)現(xiàn):publicFileSecret(){ //定義各種小組件 bu1=newButton("加密"); bu2=newButton("解密"); itemopen=newMenuItem("打開"); itemsave=newMenuItem("保存"); menu=newMenu("文件"); fileDialog_open=newFileDialog(this,"文件打開",FileDialog.LOAD); fileDialog_save=newFileDialog(this,"文件保存",FileDialog.SAVE); txtArea=newTextArea(31,108); label=newLabel("文件瀏覽窗口:"); bar=newMenuBar(); //添加四個(gè)監(jiān)聽器 itemopen.addActionListener(this); itemsave.addActionListener(this); bu1.addActionListener(this); bu2.addActionListener(this); //將菜單欄放入窗口中 this.setMenuBar(bar); bar.add(menu); menu.add(itemopen); menu.add(itemsave); //創(chuàng)建四個(gè)輕量容器 Boxbox1 Boxbox2 Boxbox3 BoxboxSum=Box.createVerticalBox(); Panelpanel1=newPanel(); Panelpanel2=newPanel(); //將組件放入面板中 panel1.add(bu1); panel1.add(bu2); panel2.add(txtArea); //將面板及部分組件放入BOX中 box1.add(panel1); box2.add(label); box3.add(panel2); boxSum.add(box1); boxSum.add(box2); boxSum.add(box3); //將總BOX放入窗口中 this.add(boxSum); this.setLayout(newFlowLayout()); this.setIconImage(imageA); //設(shè)置窗口屬性 this.setBounds(250,80,800,600); this.setTitle("加密與解密"); this.setResizable(false); this.setVisible(true); this.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ //關(guān)閉窗口 dispose(); super.windowClosing(e); } }); } 4.3功能設(shè)計(jì)4.3.1文件打開功能此功能主要利用File類,F(xiàn)ileDialog類,F(xiàn)ileReader類,F(xiàn)ileWriter類,BufferedReader類和BufferedWriter類實(shí)現(xiàn)。首先,創(chuàng)建兩個(gè)FileDialog類,F(xiàn)ileDialog類顯示一個(gè)對(duì)話框窗口,用戶可以從中選擇文件,一個(gè)用于打開文件,一個(gè)用于保存文件。在打開文件時(shí),先用setText(null)清空文本框的內(nèi)容,再運(yùn)用File類將文件中的字符導(dǎo)出來,再用FileReader類和BufferedReader類達(dá)成流的傳輸,然后用BufferedReader類的readLine()方法和一個(gè)for循環(huán)將文件中的字符輸出到一個(gè)String類中,最后用TextArea類的append()方法將文件中的內(nèi)容顯示到文本區(qū)域中。圖4-2打開文件 4.3.2在保存文件時(shí),運(yùn)用File類創(chuàng)建一個(gè)新文件,再用FileWriter類和BufferedWriter類達(dá)成流的傳輸,然后用BufferedWriter類的write()方法和TextArea類的getText()方法將文本框中的內(nèi)容輸出到這個(gè)新文件中。圖4-3保存文件代碼實(shí)現(xiàn):publicvoidactionPerformed(ActionEvente){ //四個(gè)事件 //文件打開鍵 if(e.getSource()==itemopen){ //使選擇文件窗口可見 fileDialog_open.setVisible(true); txtArea.setText(null); Strings; if(fileDialog_open.getFile()!=null){ try{ Filefile=newFile(fileDialog_open.getDirectory(),fileDialog_open.getFile()); FileReaderfileReader=newFileReader(file); BufferedReaderfileIn=newBufferedReader(fileReader); while((s=fileIn.readLine())!=null){ txtArea.append(s+"\n"); } fileIn.close(); fileReader.close(); }catch(Exceptione1){ e1.printStackTrace(); } } } //文件保存鍵 if(e.getSource()==itemsave){ fileDialog_save.setVisible(true); if(fileDialog_save.getFile()!=null){ try{Filefile=newFile(fileDialog_save.getDirectory(),fileDialog_save.getFile()); FileWriterfileWriter=newFileWriter(file); BufferedWriterfileOut=newBufferedWriter(fileWriter); fileOut.write(txtArea.getText(),0,(txtArea.getText()).length()); fileOut.close(); fileWriter.close(); }catch(Exceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); } } }4.3.3在點(diǎn)擊加密按鈕時(shí),運(yùn)用TextArea類的getText()方法將文本區(qū)域中的內(nèi)容變成String字符串,然后用String類的toCharArray()方法將此字符串轉(zhuǎn)換成一個(gè)新的字符數(shù)組。然后利用for循環(huán),對(duì)這個(gè)數(shù)組ch1[]進(jìn)行異或運(yùn)算secret^ch1[i],即達(dá)到了對(duì)文件加密的效果。最后通過for循環(huán)和TextArea類的append()方法將加密后的文件內(nèi)容顯示在文本區(qū)域中。圖4-4加密前的界面圖4-5加密后的界面代碼實(shí)現(xiàn):if(e.getSource()==bu1) { charch1[]=txtArea.getText().toCharArray();/*把texta中獲得的文本,進(jìn)行初始化,與原字符串長度相等,并將該字符串對(duì)象的全部字符復(fù)制到該數(shù)組a[]中*/ charsecret=''; txtArea.setText(null); for(inti=0;i<ch1.length;i++){ charc=(char)(secret^ch1[i]);//進(jìn)行異或運(yùn)算 txtArea.append(""+c); } } 4.3.在點(diǎn)擊解密按鈕時(shí),運(yùn)用TextArea類的getText()方法將文本區(qū)域中被加密的內(nèi)容變成String字符串,然后用String類的toCharArray()方法將此字符串轉(zhuǎn)換成一個(gè)新的字符數(shù)組。然后利用for循環(huán),對(duì)這個(gè)數(shù)組ch1[]進(jìn)行異或運(yùn)算secret^ch1[i],即達(dá)到了對(duì)文件解密的效果。最后通過for循環(huán)和TextArea類的append()方法將解密后的文件內(nèi)容顯示在文本區(qū)域中。圖4-6解密后的界面代碼實(shí)現(xiàn):if(e.getSource()==bu2){ charch2[]=txtArea.getText().toCharArray(); charsecret=''; txtArea.setText(null); for(inti=0;i<ch2.length;i++){ charc=(char)(ch2[i]^secret);//再次進(jìn)行異或運(yùn)算 txtArea.append(""+c); if(i%13==0&&i!=0){ txtArea.append("\n"); } }5總結(jié)與展望在本次課程設(shè)計(jì)的過程中,我學(xué)到了很多,不僅對(duì)所學(xué)的知識(shí)有一個(gè)新的認(rèn)識(shí),認(rèn)識(shí)到要做一個(gè)課程設(shè)計(jì)不僅需要我們有一種很嚴(yán)謹(jǐn)?shù)膽B(tài)度和扎實(shí)的知識(shí)作為基礎(chǔ)和后盾的,還要將理論知識(shí)與實(shí)際課題相結(jié)合起來,不僅培養(yǎng)了獨(dú)立思考、動(dòng)手操作的能力,在各種其它能力上也都有了提高。通過此次課程設(shè)計(jì),將本學(xué)期所學(xué)的JAVA知識(shí)得到鞏固和應(yīng)用,在設(shè)計(jì)的過程中我遇到了很到問題,不過在老師和同學(xué)們的幫助和自己的思考下還是很好的完成了。這次課程設(shè)計(jì)還讓我懂得了寫程序不能閉門造車,要努力拓寬知識(shí)面,開闊視野,拓展思維。它還讓我學(xué)會(huì)了在網(wǎng)上查閱那些無限的資源。在以后的生活中不管做什么事都需要有一顆堅(jiān)持不懈的心,在遇到困難時(shí)要有毫不氣餒迎難而上的勇氣,要腳踏實(shí)地一步一步的做下去,不能急于求成。參考文獻(xiàn)(1)丁振凡.《Java語言實(shí)用教程》北京郵電大學(xué)出版社。(2)耿祥義.《Java2實(shí)用教程》清華大學(xué)出版社。(3)趙付青.《Java面向?qū)ο蟪绦蛟O(shè)計(jì)》國防工業(yè)出版社。(4)耿祥義.《Java課程設(shè)計(jì)》清華大學(xué)出版社。附錄packageset_secret;importjava.awt.*;importjava.io.*;importjavax.swing.Box;publicclassFileSecretextendsFrameimplementsActionListener{ Menumenu; MenuBarbar; MenuItemitemopen; MenuItemitemsave; FileDialogfileDialog_open; FileDialogfileDialog_save; Buttonbu1; Buttonbu2; TextAreatxtArea; Labellabel; //設(shè)置窗口圖標(biāo)及背景圖片 ImageimageA=Toolkit.getDefaultToolkit().getImage("7a899e510fb30f24b3082a05cb95d143ad4b0322.jpg"); publicFileSecret(){ //定義各種小組件 bu1=newButton("加密"); bu2=newButton("解密"); itemopen=newMenuItem("打開"); itemsave=newMenuItem("保存"); menu=newMenu("文件"); fileDialog_open=newFileDialog(this,"文件打開",FileDialog.LOAD); fileDialog_save=newFileDialog(this,"文件保存",FileDialog.SAVE); txtArea=newTextArea(31,108); label=newLabel("文件瀏覽窗口:"); bar=newMenuBar(); //添加四個(gè)監(jiān)聽器 itemopen.addActionListener(this); itemsave.addActionListener(this); bu1.addActionListener(this); bu2.addActionListener(this); //將菜單欄放入窗口中 this.setMenuBar(bar); bar.add(menu); menu.add(itemopen); menu.add(itemsave); //創(chuàng)建四個(gè)輕量容器 Boxbox1 Boxbox2 Boxbox3 BoxboxSum=Box.createVerticalBox(); Panelpanel1=newPanel(); Panelpanel2=newPanel(); //將組件放入面板中 panel1.add(bu1); panel1.add(bu2); panel2.add(txtArea); //將面板及部分組件放入BOX中 box1.add(panel1); box2.add(label); box3.add(panel2); boxSum.add(box1); boxSum.add(box2); boxSum.add(box3); //將總BOX放出窗口中 this.add(boxSum); this.setLayout(newFlowLayout()); this.setIconImage(imageA); //設(shè)置窗口屬性 this.setBounds(250,80,800,600); this.setTitle("加密與解密"); this.setResizable(false); this.setVisible(true); this.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ //關(guān)閉窗口 dispose(); super.windowClosing(e); } }); } publicvoidactionPerformed(ActionEvente){ //四個(gè)事件 //文件打開鍵 if(e.getSource()==itemopen){ //使選擇文件窗口可見 fileDialog_open.setVisible(true); txtArea.setText(null); Strings; if(fileDialog_open.getFile()!=null){ try{ Filefile=newFile(fileDialog_open.getDirectory(),fileDialog_open.getFile()); FileReaderfileReader=newFileReader(file); BufferedReaderfileIn=newBufferedReader(fileReader); while((s=fileIn.readLine())!=null){ txtArea.append(s+"\n"); } fileIn.close(); fileReader.close(); }catch(Exceptione1){ e1.printStackTrace(); } } } //文件保存鍵 if(e.getSource()==itemsave){ fileDialog_save.setVisible(true); if(fileDialog_save.getFile()!=null){ try{ Filefile=newFile(fileDialog_s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 沖壓員工考試題及答案
- 財(cái)務(wù)崗前培訓(xùn)考試試題及答案
- 2025-2026人教版八年級(jí)物理上冊(cè)測(cè)試
- 2026年重點(diǎn)高中自主招生考試語文試卷試題(含答案+答題卡)
- 2025-2026二年級(jí)科學(xué)學(xué)期末測(cè)試
- 2025-2026一年級(jí)體育期末考卷
- 衛(wèi)生室倉庫盤存制度
- 學(xué)校衛(wèi)生室廠家管理制度
- 衛(wèi)生院信訪維穩(wěn)管理制度
- 衛(wèi)生消毒晨午檢制度
- 2026年山東省威海市單招職業(yè)傾向性測(cè)試題庫附答案解析
- 2026新疆伊犁州新源縣總工會(huì)面向社會(huì)招聘工會(huì)社會(huì)工作者3人考試備考試題及答案解析
- 《研學(xué)旅行課程設(shè)計(jì)》課件-研學(xué)課程設(shè)計(jì)原則
- JJG 693-2011可燃?xì)怏w檢測(cè)報(bào)警器
- (本科)大學(xué)生勞動(dòng)教育理論與實(shí)踐教程全書電子教案完整版
- 黑龍江省中藥飲片炮制規(guī)范及標(biāo)準(zhǔn)
- 盤口暗語及盤口數(shù)字語言
- QC-提高衛(wèi)生間防水一次驗(yàn)收合格率
- 彈藥庫防火防爆消防演示
- 大地測(cè)量控制點(diǎn)坐標(biāo)轉(zhuǎn)換技術(shù)規(guī)程
- 食材配送服務(wù)方投標(biāo)方案(技術(shù)標(biāo))
評(píng)論
0/150
提交評(píng)論