版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
//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(); //設(shè)置文本區(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{ //保存密鑰文件的目錄路徑(主要用來設(shè)置密鑰的保存路徑) StringfileName=null; //設(shè)置文件選擇對話框 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; //設(shè)置文件選擇對話框 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è)置文件選擇對話框 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; //設(shè)置文件選擇對話框 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è)置文件選擇對話框 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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 堆假山合同范例
- 瀝青清包工合同范例
- 豬買賣合同范例
- 2025勞動合同續(xù)簽期限
- 照顧獨(dú)居老人合同范例
- 工程營銷合同范例
- 住宿 會議 用餐合同范例
- 工地木材合同范例
- 肯德基假期兼職合同范例
- 溝渠維修合同范例
- 9歲兒童智商測試題
- 大鎖孫天宇小品《時間都去哪了》臺詞劇本完整版-一年一度喜劇大賽
- 消防立管永臨結(jié)合施工方案
- 人教版八年級物理下冊 實(shí)驗(yàn)題02 壓力壓強(qiáng)實(shí)驗(yàn)(含答案詳解)
- 抖音快手短視頻創(chuàng)業(yè)項(xiàng)目融資商業(yè)策劃書
- 滬教版英語八年級上冊知識點(diǎn)歸納匯總
- 裝飾裝修工程售后服務(wù)具體措施
- 軟件設(shè)計(jì)說明書通用模板
- 酒店治安安全培訓(xùn)
- 糖皮質(zhì)激素類藥物臨床應(yīng)用指導(dǎo)原則(2023年)
- 我的家鄉(xiāng)-東營
評論
0/150
提交評論