¿Una forma sencilla e integrada de cifrar y descifrar un archivo en una Mac a través de la línea de comandos?

29

¿Hay alguna herramienta de línea de comandos integrada que pueda cifrar y descifrar un archivo de texto (y proporcionarle algún tipo de contraseña)?

codecompleting
fuente
Construido en = viene con el Mac, preinstalado?
wizlog

Respuestas:

43

openssl Viene preinstalado en Mac OS X.

Puedes usar los siguientes 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 de CÓMO de la línea de comandos de OpenSSL: ¿Cómo simplemente cifro un archivo? )

Estos comandos utilizan el cifrado AES de 256 bits con Cipher Block Chaining (CBC), que es casi tan seguro como lo es ahora.

Dennis
fuente
1
¿Dónde ingresas tu contraseña?
codecompleting
3
Una vez ejecutado alguno de los anteriores openssl ordena, te pide que enter aes-256-cbc encryption password.
Dennis
@codecompletar o especificar -pass pass:MYSECRETPASSWORD, aunque la contraseña, por supuesto, no está oculta para ps, etc.
A-B-B
1
@Wildcard Sí, la sal (en realidad, el vector de inicialización) se almacena con el texto cifrado en el archivo cifrado.
Dennis
1
El cifrado @KolobCanyon nunca tiene pérdidas. Por definición, requiere poder descifrar el texto cifrado para restaurar el texto plano original. Simplemente no olvides la llave.
Dennis
5

He construido un script de shell para eso. Puedes usarlo en Mac o en 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

Simplemente guarde esto en un archivo de texto en el archivo chmod + x para hacerlo ejecutable. después de eso use ./filename --help para obtener información.

persec
fuente
Uso innecesario de -a Hincha innecesariamente el archivo de salida.
A-B-B
3

Mac OS X tiene la capacidad de crear archivos de contenedor encriptados (similar a, por ejemplo, Truecrypt), que opcionalmente puede crecer con la cantidad de datos colocados en ellos. Utilizar Utilidad de disco para hacer esto.

En Utilidad de disco , seleccione Archivo »Nuevo» Imagen de disco en blanco ... con uno de los escaso Formatos de imagen. Seleccione AES-128 o AES-256 como cifrado.


Desde la línea de comandos, la misma funcionalidad está disponible a través de la hdiutil programa.

Daniel Beck
fuente
Un poco excesivo para un solo archivo de texto destinado al acceso a la línea de comandos, ¿no es así? ¿Puedes abrir el archivo más tarde a través de Linux et. Alabama.?
Wildcard
@Wildcard Posiblemente (el alcance tiene una tendencia a cambiar); y no, pero no era parte de la pregunta.
Daniel Beck