過去 3 日間解決しようとしてきた問題があります。特定の結果を得るには、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)));
}
正しい結果 8C A6 4D E9 C1 B1 23 A7 の代わりに F4 DA 4D 97 BF CF 23 D9 を出力します (テスト ベクトルによると: http://common-lisp.net/project/clbuild/mirror/ironclad/test- vector/des.testvec ) メソッド hexadecimalString および convertStringToBytes は、バイトを 16 進数に、またはその逆に変換するだけです。誰でも私を助けてもらえますか?かなり長い間検索した後、どうすればよいかわかりません。前もって感謝します。ジョー