我已经使用DES为密钥提供了字符串和加密文件。这是我所知道的。我不知道密钥是如何编码的。Java - 将字符串转换为DES密钥
还有,我可以用它来解密des.exe,这是我在网上查到:http://knowledge-republic.com/CRM/2011/07/how-to-decrypt-extract-recreate-thecus-storage-firmware/
使用des.exe,它与唯一的命令是“-D”,不“-d”。
我的目标是使用Java来做同样的事情。我从某处复制并粘贴了这个文件
String key = "blah";
DESKeySpec dks = new DESKeySpec(key.getBytes());
SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
SecretKey desKey = skf.generateSecret(dks);
System.out.println(desKey);
Cipher cipher = Cipher.getInstance("DES"); // DES/ECB/PKCS5Padding for SunJCE
if (mode == Cipher.DECRYPT_MODE) {
cipher.init(Cipher.DECRYPT_MODE, desKey);
CipherOutputStream cos = new CipherOutputStream(os, cipher);
doCopy(is, cos);
}
并且它不起作用。
将字符串转换为密钥有哪些其他选择?
应该加上我是一个完整的密码学新手。
您收到的密钥是如何编码的?它是十六进制还是base64?在将它传递给DESKeySpec构造函数之前,必须将该字符串转换为解码的字节数组。 – stevevls
是不是key.getBytes()会做什么?我所拥有的钥匙实际上只是一个字符串,我不确定已经做了什么。我曾尝试使用Base64进行解码,并且抱怨说“Base64编码数据中存在非法字符”。 – kouri
我试图使用UTF8,UTF16,ISO,HEX ......解码。还有其他什么? – kouri