我有一個問題,我一直試圖解決過去三天。我必須使用DES來加密字節數組以獲得特定結果。但是,Java中的DES的默認實現(Javax.crypto.cipher,JDK 7,提供者SunJCE版本1.7)似乎不起作用。 當我有以下代碼:Java密碼DES怪異結果
private void testDES() throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
Cipher cipher = Cipher.getInstance("DES/ECB/NoPadding");
byte[] keyByte = convertStringToBytes("00 00 00 00 00 00 00 00");
byte[] data = convertStringToBytes("00 00 00 00 00 00 00 00");
Key key = new SecretKeySpec(keyByte, "DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
System.out.println(hexadecimalString(cipher.doFinal(data)));
}
它打印F4 DA 4D 97 BF CF 23 D9而不是正確結果的圖8C A6 4D E9 C1 B1 23 A7(根據測試向量:http://common-lisp.net/project/clbuild/mirror/ironclad/test-vectors/des.testvec) 的方法hexadecimalString和convertStringToBytes只是將字節轉換爲hexa,反之亦然。 任何人都可以幫我嗎?經過了相當長的時間,我只是不知道該怎麼做。提前致謝。喬
也許這些方法只是做了錯誤的?爲什麼不直接使用字節:'new byte [] {0,0,0,0,0,0,0,0}'? –