Простой встроенный способ шифрования и дешифрования файла на Mac через командную строку?

40

Существуют ли какие-либо встроенные инструменты командной строки, которые я могу зашифровать и расшифровать в текстовом файле (и предоставить ему какой-то пароль).

codecompleting
источник
Встроенный = поставляется с Mac, предустановленным?
wizlog

Ответы:

53

openssl поставляется предварительно установленным в Mac OS X.

Вы можете использовать следующие команды:

# encrypt file.txt to file.enc using 256-bit AES in CBC mode
openssl enc -aes-256-cbc -salt -in file.txt -out file.enc

# the same, only the output is base64 encoded for, e.g., e-mail
openssl enc -aes-256-cbc -a -salt -in file.txt -out file.enc

# decrypt binary file.enc
openssl enc -d -aes-256-cbc -in file.enc -out file.txt

# decrypt base64-encoded version
openssl enc -d -aes-256-cbc -a -in file.enc -out file.txt

(скопировано из командной строки OpenSSL HOWTO: как мне просто зашифровать файл? )

Эти команды используют 256-битное шифрование AES с Cipher Block Chaining (CBC), что примерно так же безопасно, как и сейчас.

Деннис
источник
1
где вы вводите свой пароль?
завершение кода
3
Как только вы выполнили любую из вышеперечисленных opensslкоманд, он попросит вас enter aes-256-cbc encryption password.
Деннис
1
@codecompleting Или укажите -pass pass:MYSECRETPASSWORD, хотя пароль тогда, конечно, не скрыт от psи т. д.
Acumenus
2
@Wildcard Да, соль (фактически, вектор инициализации) хранится с зашифрованным текстом в зашифрованном файле.
Деннис
1
@KolobCanyon Шифрование никогда не бывает с потерями. По определению требуется расшифровка зашифрованного текста для восстановления исходного текста. Только не забудь ключ.
Деннис
6

Я построил сценарий оболочки для этого. Вы можете использовать его на Mac или Linux.

#!/bin/bash
#encrypt files with aes-256-cbc cipher using openssl

#encrypt files
if [ $1 == "-e" ];
then
    if [ -f "$2" ];
    then
    openssl aes-256-cbc -a -e -salt -in "$2" -out "$2.aes"
    else
       echo "This file does not exist!" 
    fi
#decrypt files
elif [ $1 == "-d" ];
then
    if [ -f "$2" ];
    then
        openssl aes-256-cbc -a -d -salt -in "$2" -out "$2.decrypt"
    else
        echo "This file does not exist!" 
    fi
#show help
elif [ $1 == "--help" ];
then
    echo "This software uses openssl for encrypting files with the aes-256-cbc cipher"
    echo "Usage for encrypting: ./encrypt -e [file]"
    echo "Usage for decrypting: ./encrypt -d [file]"
else
    echo "This action does not exist!"
    echo "Use ./encrypt --help to show help."
fi

Просто сохраните это в текстовом файле выпуска chmod + x file, чтобы сделать его исполняемым. после этого используйте ./filename --help, чтобы получить информацию.

persec
источник
2
Излишнее использование -aприведет к раздуванию выходного файла.
Acumenus
5

Mac OS X имеет возможность создавать зашифрованные контейнерные файлы (аналогично, например, Truecrypt), которые могут увеличиваться в зависимости от объема данных, помещенных в них. Используйте Disk Utility для этого.

В Дисковой утилите выберите Файл »Создать» Пустой образ диска ... с одним из разреженных форматов изображений. Выберите AES-128 или AES-256 в качестве шифрования.


Из командной строки те же функции доступны через hdiutilпрограмму.

Даниэль Бек
источник
Немного излишним для одного текстового файла, предназначенного для доступа к командной строке, не так ли? Можете ли вы открыть файл позже через Linux et. и др.?
Wildcard
@Wildcard Возможно (область видимости имеет тенденцию меняться); и нет, но это не было частью вопроса.
Даниэль Бек
@DanielBeck, бит вывода идентичен Ans1?
Пейсер