Я много искал и пока не получил ясности по моей конкретной проблеме.У меня есть процесс, использующий node.js, который шифрует некоторые элементы данных и сохраняет вывод шестнадцатеричной строки.Чтобы не вдаваться в подробности этого конкретного процесса, результаты такие же, как у следующего онлайн-инструмента здесь .
Если вы введете в этот инструмент следующее:
Enter text to be Encrypted: "666326911"
Select Mode: "CBC"
Key Size in Bits: "256"
Enter IV: (Leave blank)
Enter Secret Key: "c88ba867994f440963f55b727cdd3cb7"
Output Text Format: "Hex"
Вывод шифрования даст вам «C08F3DD7F5F7ACD0FC3710ADDFBF596C».Этот результат соответствует моему процессу.
Теперь мне нужно использовать Java для шифрования данных таким же образом.Мой код дает мне совершенно разные результаты, и я не могу точно определить, где произошла моя ошибка.Вот код Java, который я использую:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
Key key = new SecretKeySpec(Hex.decodeHex("c88ba867994f440963f55b727cdd3cb7"), "AES");
IvParameterSpec iv = new IvParameterSpec(new byte[16]);
cipher.init(Cipher.ENCRYPT_MODE,key,iv);
byte[] testString = "666326911".getBytes("UTF-8");
byte[] encrypted = cipher.doFinal(testString);
System.out.println("Encrypt Hex: "+Hex.encodeHexString(encrypted));
Этот код дает мне результат "DA6711D88635E82B68673D9C077B070F".Может кто-нибудь сказать мне, где моя очевидная ошибка или неверное предположение?
Спасибо, Скотт
РЕДАКТИРОВАТЬ:
Изменение кода на:
SecretKeySpec key = new SecretKeySpec("c88ba867994f440963f55b727cdd3cb7".getBytes("UTF-8"), "AES");
приводит к «InvalidKeyException: Недопустимый размер ключа»