У меня есть файл, сгенерированный из openssl cli, который работает как положено:
$ openssl aes-256-cbc -salt -pbkdf2 -a -in tmp/secrets.json.enc -out secrets.json.enc -k FOOBAR
$ openssl aes-256-cbc -salt -pbkdf2 -a -in secrets.json.enc -k FOOBAR -d
Я сейчас пытаюсь прочитать этот файл, используя php, но с ошибками без вывода сообщений (ложное возвращаемое значение)
$key="FOOBAR"
$encryptedText = file_get_contents($path)'
$decrypted = openssl_decrypt($encryptedText, "aes-256-cbc", $key);
openssl генерирует динамические c iv и значения соли, которые я вижу, когда делаю зашифрованный файл с -P
но! когда я расшифровываю его, все, что мне нужно знать, это значение ключа. На CLI этого достаточно, чтобы получить расшифрованные данные.
PHP, кажется, требует, чтобы я знал IV.
Когда я создаю файл из командной строки, я попытался установить IV для всех 0 байтов, передавая -nosalt
, который дает детерминированный c результат ключа / iv
Но замена их в openssl_decrypt, похоже, не работает. Просто больше молчаливых провалов.
Как получить расшифрованные данные только с ключа? В этот момент я могу просто выложить bash.
Я знаю, что openssl использует pbkdf2 для генерации соли и iv из ключа. Если я не могу просто использовать ключ напрямую, можно ли сгенерировать составные части из ключа, используя php?
OpenSSL 1.1.1
PHP 7.2.X