版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
//DES加密:(1)生成密鑰文件(2)利用密鑰,加密文件(3)根據(jù)密鑰,對加密的文件解密importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.ObjectInputStream;importjava.io.ObjectOutputStream;importjava.security.Key;importjavax.crypto.Cipher;importjavax.crypto.KeyGenerator;importjavax.swing.JFileChooser;importjavax.swing.JFrame;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;importjavax.swing.ScrollPaneConstants;publicclassDES{ publicstaticvoidmain(Stringargs[]){ DemoWindow1dw=newDemoWindow1("DES加密程序"); dw.setBounds(dw.getToolkit().getScreenSize().width/3,dw.getToolkit() .getScreenSize().height/3, dw.getToolkit().getScreenSize().width/3,dw.getToolkit() .getScreenSize().height/3); dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); dw.setVisible(true); }}classDemoWindow1extendsJFrameimplementsActionListener{ JTextAreajta=newJTextArea(); //設置文本區(qū)的滾動條 intv=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED; inth=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED; JScrollPanejsp=newJScrollPane(jta,v,h); //菜單 JMenuBarmenuBar=newJMenuBar(); JMenumainMenu=newJMenu("DES加密"); JMenuItemgenerateItem=newJMenuItem("生成密鑰"); JMenuItemencryptItem=newJMenuItem("加密信息"); JMenuItemdecryptItem=newJMenuItem("解密信息"); //構(gòu)造函數(shù) publicDemoWindow1(Stringtitle){ super(title); //添加菜單 mainMenu.add(generateItem); mainMenu.addSeparator(); mainMenu.add(encryptItem); mainMenu.add(decryptItem); menuBar.add(mainMenu); setJMenuBar(menuBar); //添加文本區(qū) add(jsp); //添加事件監(jiān)聽 generateItem.addActionListener(this); encryptItem.addActionListener(this); decryptItem.addActionListener(this); } publicvoidactionPerformed(ActionEvente){ //TODOAuto-generatedmethodstub if(e.getSource()==generateItem){ try{ //保存密鑰文件的目錄路徑(主要用來設置密鑰的保存路徑) StringfileName=null; //設置文件選擇對話框 JFileChooserjfc=newJFileChooser(); jfc.setDialogTitle("保存密鑰"); //該文件選擇對話框只能打開文件目錄 jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); //如果選中,則獲取選擇的目錄名稱 if(jfc.showSaveDialog(this)==JFileChooser.APPROVE_OPTION){ fileName=jfc.getSelectedFile().getPath(); } //如果沒有選擇目錄,則退出 if(fileName==null){ return; } //判斷目錄是否存在,如果不存在,則創(chuàng)建 Filefile=newFile(fileName); if(!file.exists()) file.mkdir(); //創(chuàng)建DES密鑰生成器 KeyGeneratorkeyGen=KeyGenerator.getInstance("DES"); //采用56位DES密鑰 keyGen.init(56); //生成DES密鑰 Keykey=keyGen.generateKey(); System.out.println(key); //將密鑰存儲到指定目錄下的“密鑰.dat"文件中 ObjectOutputStreamout=newObjectOutputStream( newFileOutputStream(fileName+"/密鑰.dat")); out.writeObject(key); out.close(); }catch(Exceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); } }elseif(e.getSource()==encryptItem){ try{ //讀取密鑰文件的完整路徑 StringfileName=null; //設置文件選擇對話框 JFileChooserjfc=newJFileChooser(); jfc.setDialogTitle("導入密鑰文件"); //如果選中,則獲取選擇文件的完整路徑 if(jfc.showOpenDialog(this)==JFileChooser.APPROVE_OPTION){ fileName=jfc.getSelectedFile().getPath(); } //如果沒有選擇文件,則退出 if(fileName==null){ return; } //讀取密鑰文件 ObjectInputStreamin=newObjectInputStream( newFileInputStream(fileName)); Keykey=(Key)in.readObject(); //創(chuàng)建DES加密器 Ciphercipher=Cipher.getInstance("DES"); //設置加密模式 cipher.init(Cipher.ENCRYPT_MODE,key); //生成密文,存放在cipherText字節(jié)數(shù)組中 byte[]cipherText=cipher.doFinal(jta.getText().getBytes( "UTF-8")); //設置文件選擇對話框 jfc=newJFileChooser(); jfc.setDialogTitle("保存加密文本內(nèi)容"); //如果選中,則獲取選擇的文件的完整路徑 if(jfc.showSaveDialog(this)==JFileChooser.APPROVE_OPTION){ fileName=jfc.getSelectedFile().getPath(); } //如果沒有選擇文件,則退出 if(fileName==null) return; //將密文存儲到指定文件中 FileOutputStreamfos=newFileOutputStream(fileName,false); fos.write(cipherText); fos.close(); }catch(Exceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); } }elseif(e.getSource()==decryptItem){ try{ //讀取密鑰文件的完整路徑 StringfileName=null; //設置文件選擇對話框 JFileChooserjfc=newJFileChooser(); jfc.setDialogTitle("打開加密文本內(nèi)容"); if(jfc.showOpenDialog(this)==JFileChooser.APPROVE_OPTION){ fileName=jfc.getSelectedFile().getPath(); } //如果沒有選擇文件,就退出 if(fileName==null) return; //讀取密文 FileInputStreamfis=newFileInputStream(fileName); byte[]cipherText=newbyte[fis.available()]; fis.read(cipherText); fis.close(); //設置文件選擇對話框 jfc=newJFileChooser(); jfc.setDialogTitle("導入密鑰文件"); if(jfc.showOpenDialog(this)==JFileChooser.APPROVE_OPTION){ fileName=jfc.getSelectedFile().getPath(); } //如果沒有選擇文件,則退出 if(fileName==null) return; //讀取密鑰 ObjectInputStreamin=newObjectInputStream( newFileInputStream(fileName)); Keykey=(Key)in.readObject(); //創(chuàng)建DES加密器 Ciphercipher=Cipher.getInstan
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全防護視角下的Linux命令研究-深度研究
- 工業(yè)設備安全漏洞分析-深度研究
- 光電子材料開發(fā)-深度研究
- 利記數(shù)字化轉(zhuǎn)型路徑探索-深度研究
- 城市廢棄物處理策略-深度研究
- 形狀記憶效應與溫度響應關系研究-深度研究
- 數(shù)據(jù)庫性能監(jiān)控與調(diào)優(yōu)-深度研究
- 醫(yī)療數(shù)據(jù)挖掘策略研究-深度研究
- 2025年廣州工程技術職業(yè)學院高職單招職業(yè)適應性測試近5年??及鎱⒖碱}庫含答案解析
- 異構(gòu)云資源協(xié)同-深度研究
- 醫(yī)學脂質(zhì)的構(gòu)成功能及分析專題課件
- 高技能人才培養(yǎng)的策略創(chuàng)新與實踐路徑
- 2024年湖北省知名中小學教聯(lián)體聯(lián)盟中考語文一模試卷
- 2024年湖北省中考數(shù)學試卷(含答案)
- 油煙機清洗安全合同協(xié)議書
- 2024年云南省中考數(shù)學試題(原卷版)
- 污水土地處理系統(tǒng)中雙酚A和雌激素的去除及微生物研究
- 氣胸病人的護理幻燈片
- 《地下建筑結(jié)構(gòu)》第二版(朱合華)中文(2)課件
- JB T 7946.1-2017鑄造鋁合金金相
- 包裝過程質(zhì)量控制
評論
0/150
提交評論