我有一个问题,我在过去三天一直试图解决。我必须使用 DES 加密字节数组以获得特定结果。然而,Java 中 DES 的默认实现(Javax.crypto.cipher、JDK 7、提供者 SunJCE 版本 1.7)似乎不起作用。当我有以下代码时:
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 方法只是将字节转换为十六进制,反之亦然。有人可以帮我吗?找了好久,就是不知道怎么办。提前致谢。乔