Следует помнить, что для шифрования используется весь набор символов ASCII, включая непечатаемые символы. Если вы хотите иметь возможность вырезать и вставлять зашифрованные данные из консоли или текстового файла, вам нужно преобразовать их только в печатные символы. Вы можете сделать это с опцией -base64 (или -a):
echo 'Текст для шифрования' | openssl enc -base64 -aes-256-cbc -iter 1000000 -pass pass:ПАРОЛЬ
Вывод:
U2FsdGVkX19dVUjYAX58nYeNWEcJUqpywiFsZzD2DHPz7kNX97YUwqvp7KxV9Dme dwfBncJ5zcoIRctPdQkXsg==
Расшифровка делается таким же образом (нужно дополнительно указать опцию -d):
echo "U2FsdGVkX19dVUjYAX58nYeNWEcJUqpywiFsZzD2DHPz7kNX97YUwqvp7KxV9DmedwfBncJ5zcoIRctPdQkXsg==" | openssl enc -base64 -d -aes-256-cbc -iter 1000000 -pass pass:ПАРОЛЬ
ВНИМАНИЕ: Если вы используете openssl, то можно предположить, что конфиденциальность данных и, следовательно, пароль, важны для вас. Если это так, вы никогда не должны указывать пароль в командной строке, потому что он может быть показан любому, кто имеет право запускать команду ps (смотрите Как использовать команду ps для мониторинга процессов Linux).
Лучшее решение — сохранить пароль в переменной окружения и открыть его с помощью openssl:
export passwd="ПАРОЛЬ" echo "U2FsdGVkX19dVUjYAX58nYeNWEcJUqpywiFsZzD2DHPz7kNX97YUwqvp7KxV9DmedwfBncJ5zcoIRctPdQkXsg==" | openssl enc -base64 -d -aes-256-cbc -iter 1000000 -pass env:passwd
Если вы не будете использовать преобразование в кодировку Base64 и будете запускать команду вроде:
echo 'ТЕКСТ ДЛЯ ШИФРОВАНИЯ' | openssl enc -e -aes-256-cbc -nosalt -pass pass:ПАРОЛЬ
То на выходе вы получите примерно следующее:
(??b}n??v???>??G??.?B??~?
Если вы попытаетесь расшифровать эту строку так:
echo -n '(??b}n??v???>??G??.?B??~?' | openssl enc -d -aes-256-cbc -pass pass:ПАРОЛЬ
или так:
openssl enc -d -aes-256-cbc -pass pass:ПАРОЛЬ <<< '(??b}n??v???>??G??.?B??~?'
То вы получите ошибку:
bad magic number
Без преобразования в кодировку Base64 можно обойтись если сохранять результат шифрования в файл:
# шифрование в файл echo -n 'ТЕКСТ ДЛЯ ШИФРОВАНИЯ' | openssl enc -e -nosalt -out test.txt -aes-256-cbc -pass pass:ПАРОЛЬ # расшифровка из файла openssl enc -d -nosalt -in test.txt -aes-256-cbc -pass pass:ПАРОЛЬ # результат расшифровки (если пароль правильный: ТЕКСТ ДЛЯ ШИФРОВАНИЯ
Связанные статьи:
- Как зашифровать файлы в OpenSSL (100%)
- Как добавить Subject Alternative Name (subjectAltName) в самоподписанный сертификат (54.9%)
- KeePass в Linux: как русифицировать и использовать, полезные плагины (53.8%)
- Как расшифровать NS3 пароли из конфигурационного файла ZyXEL (NDMS V2) (53.8%)
- Как удалить метаданные файла на Linux (50%)
- Сравнение производительности (скорости передачи данных) OpenVPN через UDP и TCP (RANDOM - 3.8%)
Ещё один способ чтобы никто не видел пароль использовать read:
read -s var; echo 'Текст для шифрования' | openssl enc -base64 -aes-256-cbc -iter 1000000 -pass pass:$var