У меня есть этот вызов mcrypt_encrypt
для заданных $key
, $message
и $iv
:
$string = mcrypt_encrypt(MCRYPT_3DES, $key, $message, MCRYPT_MODE_CBC, $iv);
Я бы хотел изменить вызов mcrypt_encrypt
на вызов openssl_encrypt
, чтобы это было в будущем.
Имея $mode = 'des-ede3-cbc'
или $mode = '3DES';
и $options = true
, я получаю более похожий ответ, но не идентичный. Есть ли другой способ назвать это, чтобы получить идеальное совпадение?
Я получаю это (base64_encoded) для комбинаций lorem-ipsum $message
+ $key
, поэтому я начинаю верить, что одна или другая функция несколько дополняют сообщение перед шифрованием...
для Mcrypt
"Y+JgMBdfI7ZYY3M9lJXCtb5Vgu+rWvLBfjug2GLX7uo="
для для openssl
"Y+JgMBdfI7ZYY3M9lJXCtb5Vgu+rWvLBvte4swdttHY="
Попытка использования $ options для передачи OPENSSL_ZERO_PADDING, но передача чего угодно, кроме 1 (OPENSSL_RAW_DATA или true), приводит к пустой строке...
Ни использование OPENSSL_ZERO_PADDING
, ни OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING
не работают... :(
Я использую "OpenSSL 1.0.2g 1 марта 2016".
Уже прочитал этот вопрос, но мне это не помогло. Не только один с проблемами заполнения, но пока не видно решения. (Второй ответ говорит о добавлении заполнения к вызову mcrypt, я бы действительно хотел удалить заполнение из вызова шифрования openssl...