




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
//DES加密:(1)生成密鑰文件(2)利用密鑰,加密文件(3)根據(jù)密鑰,對(duì)加密的文件解密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(); //設(shè)置文本區(qū)的滾動(dòng)條 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{ //保存密鑰文件的目錄路徑(主要用來設(shè)置密鑰的保存路徑) StringfileName=null; //設(shè)置文件選擇對(duì)話框 JFileChooserjfc=newJFileChooser(); jfc.setDialogTitle("保存密鑰"); //該文件選擇對(duì)話框只能打開文件目錄 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); //將密鑰存儲(chǔ)到指定目錄下的“密鑰.dat"文件中 ObjectOutputStreamout=newObjectOutputStream( newFileOutputStream(fileName+"/密鑰.dat")); out.writeObject(key); out.close(); }catch(Exceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); } }elseif(e.getSource()==encryptItem){ try{ //讀取密鑰文件的完整路徑 StringfileName=null; //設(shè)置文件選擇對(duì)話框 JFileChooserjfc=newJFileChooser(); jfc.setDialogTitle("導(dǎo)入密鑰文件"); //如果選中,則獲取選擇文件的完整路徑 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"); //設(shè)置加密模式 cipher.init(Cipher.ENCRYPT_MODE,key); //生成密文,存放在cipherText字節(jié)數(shù)組中 byte[]cipherText=cipher.doFinal(jta.getText().getBytes( "UTF-8")); //設(shè)置文件選擇對(duì)話框 jfc=newJFileChooser(); jfc.setDialogTitle("保存加密文本內(nèi)容"); //如果選中,則獲取選擇的文件的完整路徑 if(jfc.showSaveDialog(this)==JFileChooser.APPROVE_OPTION){ fileName=jfc.getSelectedFile().getPath(); } //如果沒有選擇文件,則退出 if(fileName==null) return; //將密文存儲(chǔ)到指定文件中 FileOutputStreamfos=newFileOutputStream(fileName,false); fos.write(cipherText); fos.close(); }catch(Exceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); } }elseif(e.getSource()==decryptItem){ try{ //讀取密鑰文件的完整路徑 StringfileName=null; //設(shè)置文件選擇對(duì)話框 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(); //設(shè)置文件選擇對(duì)話框 jfc=newJFileChooser(); jfc.setDialogTitle("導(dǎo)入密鑰文件"); 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. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 住宅用地出讓合同范例
- 全清包合同范例
- 農(nóng)村污水項(xiàng)目銷售合同范例
- 磷鉬酸銨復(fù)合材料的制備及其對(duì)銫的吸附性能研究
- 會(huì)議用餐合同范例
- 網(wǎng)架安裝施工方案
- 利率市場(chǎng)化對(duì)貨幣政策銀行信貸渠道的影響研究
- 制作人合同范例
- 壩體施工方案
- 個(gè)人租房備案合同范例
- 2024年教師編制考試教育理論綜合基礎(chǔ)知識(shí)復(fù)習(xí)題庫(kù)及答案(共300題)
- 部編版三年級(jí)《習(xí)作我做了一項(xiàng)小實(shí)驗(yàn)》教案
- 外墻粉刷施工安全協(xié)議書
- 防止鍋爐水位事故的措施
- 智能制造市場(chǎng)現(xiàn)狀及發(fā)展前景分析報(bào)告
- (高清版)WST 406-2024 臨床血液檢驗(yàn)常用項(xiàng)目分析質(zhì)量標(biāo)準(zhǔn)
- 擠包絕緣直流電纜脈沖電聲法(PEA)空間電荷測(cè)試方法
- 上海市疾控中心招聘信息考試試題及答案
- 消防安全技術(shù)綜合能力要點(diǎn)概述
- DL-T 5148-2021水工建筑物水泥灌漿施工技術(shù)條件-PDF解密
- 第8版精神病學(xué)
評(píng)論
0/150
提交評(píng)論