Как я могу расшифровать данные, используя php openssl_decrypt только с ключом (например, openssl cli) - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть файл, сгенерированный из 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...