Я пытаюсь узнать, как выполнить простой шифрование/дешифрование между машиной Windows 64 (мой компьютер) и PHP, работающей на веб-сервере Linux, используя openSSL ,Шифровать/расшифровывать openSSL между Windows PC и PHP, работающим на веб-сервере Linux
На моей машине Windows, я установил OpenSSL v1.0.2k для Win64, и я использую следующую команду, чтобы создать зашифрованную строку, используя простой пароль и простой ключ, расположенный в secretkey.txt.
enc -aes-256-cbc -A -base64 -nopad -nosalt -pass pass:hello -in secretkey.txt
Когда я запускаю команду выше, я получаю следующую строку:
3WE7cuBFhuLCn3/ZBnUrBn68nn3tVn0NKKz63B3uvoc=
Используя строку выше, я бы ожидать PHP на моем веб-сервере Linux, чтобы иметь возможность расшифровать это нравится:
$encrypted = '3WE7cuBFhuLCn3/ZBnUrBn68nn3tVn0NKKz63B3uvoc=';
$enc = 'aes-256-cbc';
$password = 'hello';
$key = openssl_decrypt($encrypted, $enc, $password, OPENSSL_ZERO_PADDING);
echo $key .' should equal this-1234-is-4567-my-8910-secret';
Но вместо этого я получаю это:
9 (JT] $ WMaSèzz>. (Должна равняться это-1234-это-4567-мой-8910-секрет
Я «ве рассмотрены следующие сайты и попробовал несколько версий, но я не могу его расшифровать правильно:
Open SSL Enc
Open SSL Command Line
PHP Decrypt
не дубликат. вопрос заключается в попытке шифрования из командной строки (windows) и дешифрования с использованием php. рекомендуемое решение касается шифрования и дешифрования всего в PHP. – Marc
Вы используете base64 для вывода openssl в своем PHP-коде? –
Нулевая прокладка - плохая идея, в общем случае используется дополнение PKCS # 7 (né PKCS # 5). Нулевое заполнение не позволяет зашифровать двоичные данные, которые заканчиваются нулевым (0x00) байтом. – zaph