Я пытаюсь воссоздать некоторый 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.