我已經使用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