Расшифровать файл, созданный с помощью PHP openssl_encrypt в командной строке - PullRequest
2 голосов
/ 22 декабря 2010

У меня есть строка для encyrpt:

$encryptThis = "Super Secret Text";
echo openssl_encrypt($encryptThis, 'aes-128-cbc', '1234', FALSE, 'F68A9A229A516752');

Затем я получаю этот php-файл и в итоге получаю строку, похожую на строку символов base64.

Когда я пытаюсьрасшифровав его в командной строке я получаю "ошибка чтения входного файла".Команда, которую я использую, чтобы попытаться расшифровать, выглядит так:

openssl aes-128-cbc -a -iv F68A9A229A516752 -d -in encrypted.txt -out decypted.txt

encrypted.txt - это имя файла, в который я сохранил файл, для которого я создал wget.Чего мне не хватает?

Ответы [ 3 ]

2 голосов
/ 27 января 2011

В итоге я просто создал скрипт оболочки, который вызывается с использованием php exec () Я никогда не мог получить встроенные функции PHP для декодирования в командной строке.

2 голосов
/ 22 декабря 2010

Файл encrypted.txt имеет неправильный формат для командной строки OpenSSL.Он ожидает, что ваши данные начнутся со строки Salted__, за которой следует соль.Ваш файл не имеет этого формата, и поэтому OpenSSL выводит «ошибка чтения входного файла» (из apps/enc.c в исходном коде OpenSSL).

Обратите внимание, что в файле Base64 заголовок не является простым текстомSalted__, но скорее U2FsdGVkX1.

Так что cat encrypted.txt из командной строки и посмотрите, что в нем содержится.

(Я не знаю, предполагается ли PHP openssl_encryptдля вывода в этом формате, но я бы предположил, что если это просто тонкая оболочка для утилиты командной строки OpenSSL.)

0 голосов
/ 25 июня 2016

Полагаю, в вашем зашифрованном и закодированном в base64 файле у вас длинные строки, возможно, даже все в одной строке. Вставьте перевод строки после каждых 64 символов, и затем openssl сможет ее декодировать.

Openssl (по крайней мере, версии, которые я тестировал) неправильно декодирует файлы base64 со строками длиннее 64 символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...