Расшифровка с использованием openssl des-ede из командной строки с нулями и необработанными данными

Я пытаюсь воссоздать некоторый PHP-код openssl в командной строке. Мне удалось заставить работать следующий php-код:

$key = 'aaaaaaaabbbbbbbbccccccccdddddddd';
$key = pack('H*',$key);

$data = 'b5057bbc04b842a96144a0f617f2820e';
$data = pack('H*',$data);

$result = openssl_decrypt($data,'des-ede', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING);

Команда, над которой я работаю (Ubuntu)

openssl des-ede -in encrypted-data.txt -out decrypted-data.txt -d -K aaaaaaaabbbbbbbbccccccccdddddddd -nopad

Ключ

Ключ, которым я расшифровываю, имеет шестнадцатеричное значение: aaaaaaaabbbbbbbbccccccccdddddddd. Можно ли передать этот ключ как шестнадцатеричный?

Зашифрованные данные

Зашифрованные данные, которые я передаю в файле encoding-data.txt, представляют собой шестнадцатеричное значение: b5057bbc04b842a96144a0f617f2820e. Данные должны быть расшифрованы до Test123123. Я безуспешно пытался преобразовать зашифрованные данные в двоичные файлы и передать их через файл .bin. Должны ли эти данные быть преобразованы в какой-либо другой формат перед передачей?

Параметры

Я считаю, что у меня возникла проблема с переводом параметров php OPENSSL_RAW_DATA и OPENSSL_ZERO_PADDING в мой вызов командной строки. Я обнаружил параметр -nopad, но не уверен, что он эквивалентен параметрам в php.


person Tony    schedule 23.12.2016    source источник
comment
Это прекрасно работает. Ключ в вашем примере просто неправильный.   -  person pvg    schedule 23.12.2016
comment
@pvg Вы имеете в виду, что ключ должен быть в другом формате? Я могу расшифровать данные с помощью этого ключа в php.   -  person Tony    schedule 23.12.2016
comment
Нет, я имею в виду, что вы буквально напечатали неправильно. У вас опечатка. Вырежьте и вставьте ключ из php-кода.   -  person pvg    schedule 23.12.2016
comment
Спасибо за этот улов, однако он все еще не расшифровывается должным образом. Как вы думаете, я передаю данные в правильном формате?   -  person Tony    schedule 23.12.2016
comment
Я не знаю, что вы передаете в качестве данных. Я смог расшифровать его с помощью точного вызова, который у вас есть (и правильного ключа).   -  person pvg    schedule 23.12.2016
comment
@pvg, поэтому я попытался передать необработанные шестнадцатеричные данные в файл зашифрованных данных.txt, а также преобразовать данные в двоичные данные и передать их в файле зашифрованных данных.bin   -  person Tony    schedule 23.12.2016
comment
Необработанные двоичные данные работают нормально. Так что проблема в том, как вы его преобразовали.   -  person pvg    schedule 23.12.2016


Ответы (1)


Я включаю это сюда только потому, что не могу форматировать комментарий, и этот вопрос, вероятно, следует закрыть и удалить. Это подтверждает, что процесс работает идентично утилите командной строки openssl

pvg /tmp ➤  more e.php 
<?php
$data = 'b5057bbc04b842a96144a0f617f2820e';
$data = pack('H*',$data);

echo $data;
pvg /tmp ➤  php e.php > in
pvg /tmp ➤  openssl des-ede -in in -out out -d -K aaaaaaaabbbbbbbbccccccccdddddddd -nopad
pvg /tmp ➤  cat out
Test123123%    
person pvg    schedule 23.12.2016