Как заставить openssl шифровать пароли, такие как php, через командную строку

tee клонирует канал, а xargs передает каждой команде аргументы:

find -name 'myawesomeapp.jar' -print0 | tee >(xargs -0 chown root:webapps) | xargs -0 chmod 640
1
25.07.2016, 17:14
1 ответ

Я обнаружил это!

PHP использует переменные iv и key как строки, а CLI openssl требует шестнадцатеричной версии строк, без пробелов и новой строки, как I покажет.

Сначала мне нужно преобразовать строки iv и pass в шестнадцатеричные, используя:

Определить шестнадцатеричный эквивалент IV:

hexiv=$(echo $(echo -n '3571984260' | od -A n -t x1) | tr -d " ")

Определить шестнадцатеричный эквивалент mysecret :

hexpass=$(echo $(echo -n 'mysecret' | od -A n -t x1) | tr -d " ")

И еще кое-что: pass для php - это не пропуск для openssl cli, а КЛЮЧ:

echo -n '12345' | openssl enc -aes-256-cbc -iv "$hexiv" -K "$hexpass" -a

И теперь он работает точно так же, как скрипт php!

Важно: мне нужно было использовать -K в верхнем регистре, иначе сгенерированная строка не та.

3
27.01.2020, 23:25

Теги

Похожие вопросы