資源簡(jiǎn)介
Java實(shí)現(xiàn)三重DES文件加密,有界面,并可實(shí)現(xiàn)任意文件的加密。里面是一個(gè)源程序,以及它生成的類(lèi)文件和兩個(gè)測(cè)試文件。在cmd窗口中運(yùn)行java des.FileEncrypter即可出現(xiàn)加密界面,這是三重DES加密,密鑰可自行輸入,也可隨即生成。

代碼片段和文件信息
package?des;
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
import?java.io.*;
import?java.security.*;
import?javax.crypto.*;
import?javax.crypto.spec.*;
/**
文件名:FileEncrypter.java
功能:實(shí)現(xiàn)任意文件的加密
加密方法:DES加密
加密過(guò)程:對(duì)選中的文件加密后在同文件夾下生成一個(gè)增加了“.tdes“?擴(kuò)展名的加密文件解密過(guò)程:對(duì)選中的加密文件(必須有“.tdes“擴(kuò)展名)進(jìn)行解密?*/
public?class?FileEncrypter?extends?Jframe{
public?static?final?int?WIDTH?=?600;?
public?static?final?int?HEIGHT?=?200;
public?static?void?main(String?args[])?
{?FileEncrypter?fe?=?new?FileEncrypter();?fe.show();?}
FileEncrypter(){
this.setSize(WIDTHHEIGHT);
this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
this.setResizable(false);
Toolkit?tk?=?Toolkit.getDefaultToolkit();
Dimension?screenSize?=?tk.getScreenSize();
this.setLocation((screenSize.width?-?WIDTH)/2?(screenSize.height?-?HEIGHT)/2);
this.settitle(“文件加密器“);
Container?c?=?this.getContentPane();
c.setLayout(?new?FlowLayout());
final?FilePanel?fp?=?new?FilePanel(“??????文件選擇“);
c.add(fp);
final?KeyPanel?pp?=?new?KeyPanel(“??????????密碼????“);
c.add(pp);
JButton?jbE?=?new?JButton(“加密“);
c.add(jbE);
jbE.addActionListener(new?ActionListener(){
public?void?actionPerformed(ActionEvent?event){
File?file?=?new?File(fp.getFileName());
if?(file.exists())
encrypt(file.getAbsoluteFile()pp.getKey());
else
JOptionPane.showMessageDialog(
null“請(qǐng)選擇文件!““提示“JOptionPane.OK_OPTION);
}
});
JButton?jbD?=?new?JButton(“解密“);
c.add(jbD);
jbD.addActionListener(new?ActionListener(){
public?void?actionPerformed(ActionEvent?event){
File?file?=?new?File(fp.getFileName());
if?(file.exists())
decrypt(file.getAbsoluteFile()pp.getKey());
else
JOptionPane.showMessageDialog(null“請(qǐng)選擇文件!““提示“JOptionPane.OK_OPTION);
}
});
}
/**
加密函數(shù)
輸入:
要加密的文件,密碼(由0-F組成,共48個(gè)字符,表示3個(gè)8位的密碼)如:
AD67EA2F3BE6E5ADD368DFE03120B5DF92A8FD8FEC2F0746
其中:
AD67EA2F3BE6E5AD?DES密碼一
D368DFE03120B5DF?DES密碼二
92A8FD8FEC2F0746?DES密碼三
輸出:
對(duì)輸入的文件加密后,保存到同一文件夾下增加了“.tdes“擴(kuò)展名的文件中。
*/
private?void?encrypt(File?fileInString?sKey){
try{
if(sKey.length()?==?48){
byte[]?bytK1?=?getKeyByStr(sKey.substring(016));
byte[]?bytK2?=?getKeyByStr(sKey.substring(1632));
byte[]?bytK3?=?getKeyByStr(sKey.substring(3248));
FileInputStream?fis?=?new?FileInputStream(fileIn);
byte[]?bytIn?=?new?byte[(int)fileIn.length()];
for(int?i?=?0;ibytIn[i]?=?(byte)fis.read();
}
//加密
byte[]?bytOut?=?encryptByDES(decryptByDES(encryptByDES(bytInbytK1)bytK2)bytK3);
String?fileOut?=?fileIn.getPath()?+?“.tdes“;
FileOutputStream?fos?=?new?FileOutputStream(fileOut);
for(int?i?=?0;ifos.write((int)bytOut[i]);
}
fos.close();
JOptionPane.showMessageDialog(this“加密成功!““提示“JOptionPane.INFORMATION_MESSAGE);
System.out.println(“加密成功!“);
}else
JOptionPane.showMessageDialog(
this“密碼長(zhǎng)度必須等于48!““錯(cuò)誤信息“JOptionPane.ERROR_MESSAGE);
}catch(Exception?e){
e.printStackTrace();
}
}
/**
解密函數(shù)
輸入:
要解密的文件,密碼(由0-F組成,共48個(gè)字符,表示3個(gè)8位的密碼)如:
AD67EA2F3B
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件?????302592??2010-11-20?20:17??三重DES文件加密\cmd.exe
?????文件???????1193??2012-11-11?13:55??三重DES文件加密\des\FileEncrypter$1.class
?????文件???????1193??2012-11-11?13:55??三重DES文件加密\des\FileEncrypter$2.class
?????文件???????5782??2012-11-11?13:55??三重DES文件加密\des\FileEncrypter.class
?????文件???????1096??2012-11-11?13:55??三重DES文件加密\des\FilePanel$clickAction.class
?????文件????????942??2012-11-11?13:55??三重DES文件加密\des\FilePanel.class
?????文件???????2066??2012-11-11?13:55??三重DES文件加密\des\KeyPanel$clickAction.class
?????文件????????867??2012-11-11?13:55??三重DES文件加密\des\KeyPanel.class
?????文件???????9774??2012-11-12?09:21??三重DES文件加密\FileEncrypter.java
?????文件?????208896??2012-10-23?09:59??三重DES文件加密\獨(dú)立學(xué)院.doc
?????文件?????208920??2012-12-21?18:05??三重DES文件加密\獨(dú)立學(xué)院.doc.tdes
?????文件???????7239??2012-11-11?13:45??三重DES文件加密\獨(dú)立學(xué)院.txt
?????文件????????133??2012-12-21?18:06??三重DES文件加密\說(shuō)明.txt
?????目錄??????????0??2012-11-04?16:47??三重DES文件加密\des
?????目錄??????????0??2012-12-21?17:59??三重DES文件加密
-----------?---------??----------?-----??----
???????????????750693????????????????????15
評(píng)論
共有 條評(píng)論