Maneira interna simples de criptografar e descriptografar um arquivo em um Mac via linha de comando?

40

Existe alguma ferramenta de linha de comando integrada que eu possa criptografar e descriptografar um arquivo de texto (e fornecer algum tipo de senha).

codecompleting
fonte
Incorporado = vem com o Mac, pré-instalado?
Wizlog 21/12

Respostas:

53

openssl vem pré-instalado no Mac OS X.

Você pode usar os seguintes comandos:

# 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

(copiado da linha de comando OpenSSL COMO FAZER: Como simplesmente criptografar um arquivo? )

Esses comandos usam a criptografia AES de 256 bits com o Cipher Block Chaining (CBC), que é o mais seguro possível agora.

Dennis
fonte
1
onde você digita sua senha?
Codecompleting
3
Depois de executar qualquer um dos opensslcomandos acima , ele solicita enter aes-256-cbc encryption password.
Dennis
1
@codecompleting ou especificar -pass pass:MYSECRETPASSWORD, embora a senha é, então, é claro que não oculta a partir ps, etc.
Acumenos
2
@Wildcard Sim, o salt (na verdade, vetor de inicialização) é armazenado com o texto cifrado no arquivo criptografado.
Dennis
1
@KolobCanyon A criptografia nunca é perdida. Por definição, requer ser capaz de descriptografar o texto cifrado para restaurar o texto simples original. Só não esqueça a chave.
Dennis
6

Eu construí um script de shell para isso. Você pode usá-lo no Mac ou no 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

Simplesmente salve isso em um arquivo de texto em questão chmod + x file para torná-lo executável. depois disso, use ./filename --help para obter informações.

persec
fonte
2
O uso -adesnecessário de inchará desnecessariamente o arquivo de saída.
Acumenus 10/11
5

O Mac OS X tem a capacidade de criar arquivos de contêiner criptografados (semelhantes, por exemplo, ao Truecrypt), que podem opcionalmente crescer com a quantidade de dados inserida neles. Usar o Utilitário de Disco para fazer isso.

No Utilitário de Disco , selecione Arquivo »Novo» Imagem de Disco em Branco… com um dos formatos de imagem esparsos . Selecione AES-128 ou AES-256 como criptografia.


Na linha de comando, a mesma funcionalidade está disponível através do hdiutilprograma.

Daniel Beck
fonte
Um pouco exagerado para um único arquivo de texto destinado ao acesso à linha de comando, não é? Você pode abrir o arquivo posteriormente via Linux et. al.?
Curinga
@Wildcard Possivelmente (o escopo tem uma tendência a mudar); e não, mas não fazia parte da questão.
Daniel Beck
@DanielBeck, bit de saída idêntico ao Ans1?
Pacerier