Prosty wbudowany sposób szyfrowania i deszyfrowania pliku na komputerze Mac za pomocą wiersza polecenia?

40

Czy są jakieś wbudowane narzędzia wiersza polecenia, które mogę zaszyfrować i odszyfrować plik tekstowy (i podać mu jakieś hasło).

uzupełnianie kodów
źródło
Wbudowany = dostarczany z komputerem Mac, wstępnie zainstalowany?
wizlog

Odpowiedzi:

53

openssl jest fabrycznie zainstalowany na Mac OS X.

Możesz użyć następujących poleceń:

# 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

(skopiowane z wiersza poleceń OpenSSL HOWTO: Jak po prostu zaszyfrować plik? )

Te polecenia używają 256-bitowego szyfrowania AES z łańcuchem bloków szyfrów (CBC), który jest tak bezpieczny, jak teraz.

Dennis
źródło
1
gdzie podajesz swoje hasło?
uzupełnianie kodowe
3
Po wykonaniu dowolnego z powyższych opensslpoleceń zostaniesz o to poproszony enter aes-256-cbc encryption password.
Dennis
1
@codecompleting Lub podaj -pass pass:MYSECRETPASSWORD, chociaż hasło nie jest oczywiście przed nimi ukryte psitp.
Acumenus,
2
@Wildcard Tak, sól (właściwie wektor inicjujący) jest zapisywana z tekstem zaszyfrowanym w zaszyfrowanym pliku.
Dennis,
1
@KolobCanyon Szyfrowanie nigdy nie jest stratne. Z definicji wymaga odszyfrowania tekstu zaszyfrowanego, aby przywrócić oryginalny tekst jawny. Tylko nie zapomnij klucza.
Dennis
6

Zbudowałem do tego skrypt powłoki. Możesz go używać na komputerze Mac lub 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

Po prostu zapisz to w pliku tekstowym chmod + plik x, aby był wykonywalny. po tym użyj ./nazwa_pliku --help, aby uzyskać informacje.

prześladować
źródło
2
Niepotrzebne użycie -aspowoduje niepotrzebne rozszerzenie pliku wyjściowego.
Acumenus
5

Mac OS X ma możliwość tworzenia zaszyfrowanych plików kontenerów (podobnie jak np. Truecrypt), które mogą opcjonalnie rosnąć wraz z ilością danych w nich umieszczonych. Aby to zrobić, użyj Narzędzia dyskowego .

W Narzędziu dyskowym wybierz Plik »Nowy» Pusty obraz dysku… z jednym z rzadkich formatów obrazu. Wybierz AES-128 lub AES-256 jako szyfrowanie.


Z wiersza poleceń ta sama funkcjonalność jest dostępna za pośrednictwem hdiutilprogramu.

Daniel Beck
źródło
Trochę przesada w przypadku pojedynczego pliku tekstowego przeznaczonego do dostępu do wiersza poleceń, prawda? Czy możesz otworzyć plik później za pomocą Linux et. glin.?
Wildcard,
@Wildcard Możliwe (zakres ma tendencję do zmiany); i nie, ale nie było częścią pytania.
Daniel Beck
@DanielBeck, bit wyjściowy identyczny jak Ans1?
Pacerier