Java论坛网»Java技术»如何获得DES加密的密钥?请教高人

如何获得DES加密的密钥?请教高人

问?:
public class DESkey {
public DESkey() {
File file1 = new File("E:\\java_project\\xml\\xxx\\template\\1.xml");
File file2 = new File("E:\\java_project\\xml\\xxx\\template\\2.xml");
File file3 = new File("E:\\java_project\\xml\\xxx\\template\\3.xml");
File fileKey = new File("E:\\java_project\\xml\\xxx\\template\\key.txt");
try {
FileInputStream fileIn = new FileInputStream(file1);
KeyGenerator keygen = KeyGenerator.getInstance("DES");
SecretKey deskey = keygen.generateKey();
Cipher cipher = Cipher.getInstance("DES");

FileWriter writeFilekey = new FileWriter(fileKey);
writeFilekey.write(cipher.toString());

cipher.init(Cipher.ENCRYPT_MODE, deskey);
byte[] cipherByte = new byte[(int) file1.length()];
fileIn.read(cipherByte);
cipherByte = cipher.doFinal(cipherByte);
FileOutputStream fileout = new FileOutputStream(file2);
fileout.write(cipherByte);
fileIn.close();
writeFilekey.close();
fileout.close();

FileInputStream fileIn2 = new FileInputStream(file2);
FileReader readkey = new FileReader(fileKey);
BufferedReader br = new BufferedReader(readkey);
String keystr = br.readLine();
byte[] rawKeyData = keystr.getBytes();
DESKeySpec dks = new DESKeySpec(rawKeyData);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
try {
SecretKey skey = keyFactory.generateSecret(dks);
Cipher thiskey = Cipher.getInstance("DES");
thiskey.init(Cipher.DECRYPT_MODE, skey);
byte[] cipherByte2 = new byte[(int) file2.length()];
fileIn2.read(cipherByte2);
cipherByte = thiskey.doFinal(cipherByte2); //异常
FileOutputStream fileout2 = new FileOutputStream(file3);
fileout2.write(cipherByte);
fileIn2.close();
fileout2.close();
} catch (InvalidKeySpecException ex) {
ex.printStackTrace();
}

} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (NoSuchPaddingException ex) {
ex.printStackTrace();
} catch (InvalidKeyException ex) {
ex.printStackTrace();
} catch (BadPaddingException ex) {
ex.printStackTrace();
} catch (IllegalBlockSizeException ex) {
ex.printStackTrace();
}
}

public static void main(String[] arg) {
new DESkey();
}
}
这是本人写的一个对XML文件进行加密的程序,此程序现在可以对XML文件进行加密,并且我把加密时候使用的密钥写到一个文件上,在解密的时候读取使用,但是在解密的时候出现异常,好像是说在对文件进行解密的时候使用的密钥和加密的时候不一致,请教高手使用什么方法能使从文件中读出密钥和加密时候使用的一致,谢谢
答!: 1:
FileWriter writeFilekey = new FileWriter(fileKey);
writeFilekey.write(cipher.toString());

请问你知道你写了些什么东西到key文件?这不是key
答!: 2:
那个是key?
答!: 3:
请教高手哪个是key
答!: 4:
哎,都没有高手
答!: 5:
看我的BLOG:
http://blog.javaresearch.org/page/liaowufeng
基于口令的加解密工具类
4小时搞出来的东东。
答!: 6:
SecretKey deskey = keygen.generateKey();
//声称DES密钥
deskey才是加解密用的密钥

相关JAVA教程:
请教各位大虾,一边是一家外包公司,但是去了是作一个比较大的java项目,一边是腾讯,去了作游戏测试,作java开?
关于java连接池问题
java连接池问题
为什么我的jstl 的tool都不起作用?
请教一个hibernate tool的问题,请用过的人指点
spring+struts+Hibernate开发的系统,想在form里实现访问数据库的验证,请教~~~~~~~~
关于tiles的问题..
问一个Hibernate的问题
session里面的值又自动的给复制了,奇怪
一种高效的分页机制,设想阶段,大家快来大讨论拉,欢迎批判
分享辛苦整理分类的1000多个Java开源项目
关于JFormattedTextField的一个问题