资源简介
文件加密与解密的java代码
代码片段和文件信息
package vcvv;
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
JDK:1.40以上
说明:文件加密
加密方法:三重DES加密
加密过程:对选中的文件加密后在同文件夹下生成一个增加了“.tdes“
扩展名的加密文件
解密过程:对选中的加密文件(必须有“.tdes“扩展名)进行解密
*/
public class FileEncrypter extends Jframe{
public static final int WIDTH = 550;
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(“文件加密器(TriDES)“);
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“请选择文件!““提示“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“请选择文件!““提示“JOptionPane.OK_OPTION);
}
});
}
/**
加密函数
输入:
要加密的文件,密码(由0-F组成,共48个字符,表示3个8位的密码)如:
AD67EA2F3BE6E5ADD368DFE03120B5DF92A8FD8FEC2F0746
其中:
AD67EA2F3BE6E5AD DES密码一
D368DFE03120B5DF DES密码二
92A8FD8FEC2F0746 DES密码三
输出:
对输入的文件加密后,保存到同一文件夹下增加了“.tdes“扩展名的文件中。
*/
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;i bytIn[i] = (byte)fis.read();
}
//加密
byte[] bytOut = encryptByDES(encryptByDES(
encryptByDES(bytInbytK1)bytK2)bytK3);
String fileOut = fileIn.getPath() + “.tdes“;
FileOutputStream fos = new FileOutputStream(fileOut);
for(int i = 0;i fos.write((int)bytOut[i]);
}
fos.close();
JOptionPane.showMessageDialog(
this“加密成功!““提示“JOptionPane.OK_OPTION);
}else
JOptionPane.showMessageDialog(
this“密码长度必须等于48!““错误信息“JOptionPane.ERROR_MESSAGE);
}catch(Exception e){
e.printStackTrace();
}
}
/**
- 上一篇:java动态登录界面
- 下一篇:java web 外文文献
评论
共有 条评论