資源簡介
des對文件加密,生成.tdes文件、解密后生成解密文件。本方法是純利用二進制流對文件的加解密、
代碼片段和文件信息
package?com.ricorsoft.safe.common;
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.FileOutputStream;
import?java.io.IOException;
import?javax.crypto.Cipher;
import?javax.crypto.SecretKey;
import?javax.crypto.SecretKeyFactory;
import?javax.crypto.spec.DESKeySpec;
import?javax.swing.JFileChooser;
import?javax.swing.JOptionPane;
public?class?Demo1?{
public?static?void?main(String[]?args)?throws?IOException?{
//?需要加密的文件
File?file?=?new?File(“d:/都站起來.xls“);
//?new?Demo1().encrypt(file.getAbsoluteFile()
//?“83049E80D03B7F706DE085C2EA3EAD078CB69B2637455B4F“);
//?加密后的文件
File?fileEnCase?=?new?File(“d:/都站起來.xls.tdes“);
//?解密后的文件名
new?Demo1().decrypt(fileEnCase
“83049E80D03B7F706DE085C2EA3EAD078CB69B2637455B4F“);
String?filePath?=?fileEnCase.getParent();
String?fileName?=?fileEnCase.getName();
String?name?=?fileName.substring(0?fileName.lastIndexOf(“.“));
String?newFileName?=?fileEnCase.getParent()?+?name;
}
//?--------------------------------------------------加密-------------------------------
/**
?*?加密函數?輸入:?要加密的文件,密碼(由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? bytIn[i]?=?(byte)?fis.read();
}
//?加密
byte[]?bytOut?=?encryptByDES(encryptByDES(encryptByDES(bytIn
bytK1)?bytK2)?bytK3);
String?fileOut?=?fileIn.getPath()?+?“.tdes“;
FileOutputStream?fos?=?new?FileOutputStream(fileOut);
for?(int?i?=?0;?i? fos.write((int)?bytOut[i]);
}
fos.close();
System.out.println(“加密成功!“);
}?else
System.out.println(“密碼長度必須等于48!“);
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
/**
?*?用DES方法解密輸入的字節?bytKey需為8字節長,是解密的密碼
?*/
private?byte[]?decryptByDES(byte[]?bytE?byte[]?bytKey)?throws?Exception?{
DESKeySpec?desKS?=?new?DESKeySpec(bytKey);
SecretKeyFactory?skf?=?SecretKeyFactory.getInstance(“DES“);
SecretKey?sk?=?skf.generateSecret(desKS);
Cipher?cip?=?Cipher.getInstance(“DES“);
cip.init(Cipher.DECRYPT_MODE?sk);
return?cip.doFinal(bytE);
}
/**
?*?用DES方法加密輸入的字節?bytKey需為8字節長,是加密的密碼
?*/
private?byte[]?encryptByDES(byte[]?bytP?byte[]?bytKey)?throws?Exception?{
DESKeySpec?desKS?=?new?DESKeySpec(bytKey);
SecretKeyFactory?skf?=?SecretKeyFactory.getInstance(“DES“);
SecretKey?sk?=?skf.generateSecret(desKS);
Cipher?cip?=?Cipher.getInstance(“DES“);
cip.init
- 上一篇:jsp外文參考文獻
- 下一篇:DBUtils工具包Jar包及幫助文檔
評論
共有 條評論