java 文本文件加密 文本文件解密
[java]
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 Test extends JFrame {
public static final int WIDTH = 550;
public static final int HEIGHT = 200;
public static void main(String args[]) {
Test fe = new Test();
fe.show();
}
Test() {
this.setSize(WIDTH, HEIGHT);
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 fileIn, String sKey) {
try {
if (sKey.length() == 48) {
byte[] bytK1 = getKeyByStr(sKey.substring(0, 16));
byte[] bytK2 = getKeyByStr(sKey.substring(16, 32));
byte[] bytK3 = getKeyByStr(sKey.substring(32, 48));
FileInputStream fis = new FileInputStream(fileIn);
byte[] bytIn = new byte[(int) fileIn.length()];
for (int i = 0; i < fileIn.length(); i++) {
bytIn[i] = (byte) fis.read();
}
// 加密
byte[] bytOut = encryptByDES(
encryptByDES(encryptByDES(bytIn, bytK1), bytK2), bytK3);
Str
补充:综合编程 , 安全编程 ,