Вопрос или проблема
Есть ли встроенные инструменты командной строки, с помощью которых я могу зашифровать и расшифровать текстовый файл (и предоставить ему какой-либо пароль).
openssl
предустановлен на Mac OS X.
Вы можете использовать следующие команды:
# зашифровать file.txt в file.enc с использованием AES-256 в режиме CBC
openssl enc -aes-256-cbc -salt -in file.txt -out file.enc
# то же самое, только вывод кодируется в base64 для, например, электронной почты
openssl enc -aes-256-cbc -a -salt -in file.txt -out file.enc
# расшифровать бинарный файл file.enc
openssl enc -d -aes-256-cbc -in file.enc -out file.txt
# расшифровать версию в base64
openssl enc -d -aes-256-cbc -a -in file.enc -out file.txt
(скопировано с OpenSSL Command-Line HOWTO: Как мне просто зашифровать файл?)
Вам будет предложено ввести пароль. Вы также можете указать пароль на командной строке, используя -pass pass:mySillyPassword
или -pass file:/path/to/secret/password.txt
Эти команды используют 256-битное шифрование AES с цепочкой блочных шифров (CBC), что на данный момент является довольно надежным.
Mac OS X имеет возможность создавать зашифрованные контейнерные файлы (аналогично, например, Truecrypt), которые при необходимости могут увеличиваться в размере с добавлением данных. Используйте Disk Utility для этого.
В Disk Utility выберите File » New » Blank Disk Image… с одним из форматов sparse. Выберите AES-128 или AES-256 в качестве шифрования.
С командной строки аналогичный функционал доступен через программу hdiutil
.
Я создал оболочку для этого. Вы можете использовать ее на Mac или Linux.
#!/bin/bash
#шифрование файлов с помощью шифра aes-256-cbc с использованием openssl
#шифрование файлов
if [ $1 == "-e" ];
then
if [ -f "$2" ];
then
openssl aes-256-cbc -a -e -salt -in "$2" -out "$2.aes"
else
echo "Этот файл не существует!"
fi
#расшифровка файлов
elif [ $1 == "-d" ];
then
if [ -f "$2" ];
then
openssl aes-256-cbc -a -d -salt -in "$2" -out "$2.decrypt"
else
echo "Этот файл не существует!"
fi
#показать помощь
elif [ $1 == "--help" ];
then
echo "Это программное обеспечение использует openssl для шифрования файлов с помощью шифра aes-256-cbc"
echo "Использование для шифрования: ./encrypt -e [file]"
echo "Использование для расшифровки: ./encrypt -d [file]"
else
echo "Это действие не существует!"
echo "Используйте ./encrypt --help для показа справки."
fi
Просто сохраните это в текстовом файле и выполните chmod +x file, чтобы сделать его исполняемым. После этого используйте ./filename –help для получения информации.
Я использовал команду zip
довольно долго с паролем.
Она, по сути, создает zip-файл, защищенный паролем. Затем, чтобы получить данные, вы unzip
с использованием пароля, чтобы получить файл без пароля.
Защитите файл паролем
zip -e filetoprotect.zip filetoprotect.txt
Введите пароль для защиты.
Извлечение файла из zip, защищенного паролем
unzip filetoprotect.zip
Введите пароль, чтобы получить файл без пароля.
Ответ или решение
На Mac вы можете использовать встроенные команды для шифрования и расшифровки файлов через командную строку. Рассмотрим наиболее простые и безопасные методы, основанные на инструментах, которые уже установлены в операционной системе.
1. Использование OpenSSL
OpenSSL предоставляет мощный инструмент для шифрования данных с помощью различных алгоритмов, включая алгоритм AES. В Mac OS X OpenSSL предустановлен, и его можно использовать через терминал.
Шифрование файла
Чтобы зашифровать текстовый файл с помощью AES-256 в режиме CBC, выполните следующую команду:
openssl enc -aes-256-cbc -salt -in файл.txt -out файл.enc
- -aes-256-cbc: указывает алгоритм шифрования.
- -salt: добавляет случайные данные (
salt
) для повышения безопасности. - -in: имя файла, который вы хотите зашифровать.
- -out: имя выходного файла, в который будет записана зашифрованная информация.
При выполнении этой команды вас попросят ввести пароль, который будет использоваться для шифрования.
Расшифровка файла
Чтобы расшифровать файл, используйте следующую команду:
openssl enc -d -aes-256-cbc -in файл.enc -out файл.txt
- -d: указывает, что вы хотите расшифровать файл.
Если файл был зашифрован с использованием base64 (например, для вставки в email), используйте флаг -a:
openssl enc -d -aes-256-cbc -a -in файл.enc -out файл.txt
2. Создание зашифрованного образа диска с помощью hdiutil
Чтобы создать зашифрованный контейнер для хранения файлов, вы можете использовать команду hdiutil. Для создания зашифрованного образа диска выполните:
hdiutil create -encryption -size 100m -fs APFS -volname "SecureDisk" имя_файла.dmg
- -encryption: указывает, что образ диска будет зашифрован.
- -size: указывает размер образа.
- -fs: файловая система для использования в образе.
- -volname: имя тома, которое будет отображаться при монтировании.
Вас также попросят ввести пароль, который будет использоваться для шифрования.
3. Использование zip для шифрования файлов
Другой простой способ защиты файлов — это использование команды zip, которая позволяет создать зашифрованный zip-архив.
Для создания защищенного zip-файла используйте следующую команду:
zip -e защищенный.zip файл.txt
- -e: указывает на необходимость использования шифрования.
Чтобы распаковать зашифрованный zip-файл, используйте:
unzip защищенный.zip
При этом будет запрошен пароль для доступа к архиву.
Заключение
Использование командной строки на Mac для шифрования и расшифровки файлов является простым и эффективным способом обеспечить безопасность ваших данных. Инструменты, такие как OpenSSL и zip, позволяют легко управлять безопасностью информации, защищая ее от несанкционированного доступа. Выбирайте подходящий метод в зависимости от ваших нужд и уровня безопасности, который вам нужен.