Несоответствие шифрования между Java и PHP
Я работаю над системой шифрования, которая передает данные стороннему приложению. Шифрование выполняется на Java, а дешифрование - на PHP. Несмотря на несколько попыток, я не могу получить зашифрованную строку для открытия приложением PHP.
В целях тестирования я создал скрипт PHP, который также шифрует данные, чтобы я мог сравнить зашифрованные строки Java и PHP. Результаты совпадают до 21-го символа, а затем они отличаются. Вот что у меня есть:
<code>// Java - Encrypt private String EncryptAES(String text,String key) throws Exception { SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), "AES"); // Instantiate the cipher Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE, skeySpec); byte[] encrypted = cipher.doFinal(text.getBytes()); String encrypttext = new BASE64Encoder().encode(encrypted); return encrypttext; } RESULT: TeUZAFxoFoQy/roPm5tXyPzJP/TLAwR1aIGn2xHbZpsbY1qrKwXfO+F/DAqmeTwB0b8e6dsSM+Yy0zrQt22E2Q== </code>
а также
<code>// PHP - Encrypt <?php $encrypt = $crypt = openssl_encrypt($toCrypt,"AES256","key-32-char-long"); echo $encrypt; ?> RESULT: TeUZAFxoFoQy/roPm5tXyC05wta1Z5YOXcq4OtgFoSbfVi/bHAuD6B5tDthT8EcGXQir08UAx0QvcqRJ2fJmbQ== </code>
Очевидно, что-то делается правильно, потому что часть строк совпадает, но, очевидно, не все правильно, потому что остальные не совпадают. Кроме того, если я пытаюсь расшифровать строку Java в PHP, ничего не происходит:
<code>// PHP - Decrypt <?php $toDecrypt = "TeUZAFxoFoQy/roPm5tXyPzJP/TLAwR1aIGn2xHbZpsbY1qrKwXfO+F/DAqmeTwB0b8e6dsSM+Yy0zrQt22E2Q=="; $decrypt = openssl_decrypt($toDecrypt,"AES256","<key-32-char-long>"); echo $decrypt; ?> RESULT: <nothing> </code>
У кого-нибудь есть идеи, что может происходить?