資源簡介
文件加密與解密的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 外文文獻
評論
共有 條評論