У меня были некоторые проблемы со встроенными методами для PHP OpenSSL. Я пытаюсь сузить проблему, пробуя разные методы. Я пытаюсь следующее:
$input = "this is a test string";
$opensslCommand = "echo \"{$input}\" | openssl enc -AES-128-CBC -a -nosalt -K " . bin2hex($hashing_secret) . " -iv ". bin2hex($iv);
$first = openssl_encrypt($input, "AES-128-CBC", $hashing_secret, 0, $iv);
$second = exec($opensslCommand);
print(urlencode($first) . "<br/>");
print(urlencode($second) . "<br/>");
тем не менее, результат выше:
hn%2FZkGKl9EQ7XgFFytcPkTPxJST2jCKEVDoojmkz8xs%3D
hn%2FZkGKl9EQ7XgFFytcPkdQESeAPqlFNwJivth28m9o%3D
Как видите, они начинают расходиться в середине вывода. У меня неправильная конфигурация для встроенной или командной строки?
Стороннее редактирование:
Делать больше смысла на выходе:
Base64 кодируется:
hn/ZkGKl9EQ7XgFFytcPkTPxJST2jCKEVDoojmkz8xs=
hn/ZkGKl9EQ7XgFFytcPkdQESeAPqlFNwJivth28m9o=
В шестнадцатеричном виде:
867FD990 62A5F444 3B5E0145 CAD70F91 33F12524 F68C2284 543A288E 6933F31B
867FD990 62A5F444 3B5E0145 CAD70F91 D40449E0 0FAA514D C098AFB6 1DBC9BDA
echo
виновник здесь Есть определенный параметр, который вы можете использовать с echo для подавления новой строки, которую он добавляет к входной строке: -n
, Оказывается, это было связано с моим вкладом в openssl.
$opensslCommand = "echo -n \"{$input}\" | openssl enc -AES-128-CBC -a -nosalt -K " . bin2hex($hashing_secret) . " -iv ". bin2hex($iv);
правильная команда
Других решений пока нет …