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


40

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


Встроенный = поставляется с 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, чтобы получить информацию.


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

5

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

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


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


Немного излишним для одного текстового файла, предназначенного для доступа к командной строке, не так ли? Можете ли вы открыть файл позже через Linux et. и др.?
Wildcard

@Wildcard Возможно (область видимости имеет тенденцию меняться); и нет, но это не было частью вопроса.
Даниэль Бек

@DanielBeck, бит вывода идентичен Ans1?
Пейсер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.