Como usar o OpenSSL para cifrar/descodificar os ficheiros?

quero criptografar e descodificar um ficheiro com uma senha.

Como posso usar o OpenSSL para fazer isso?

Author: jww, 2013-04-17

7 answers

Esta é a resposta de topo para a sua pergunta do google: http://tombuntu.com/index.php/2007/12/12/simple-file-encryption-with-openssl/

Encriptação:

openssl aes-256-cbc -a -salt -in secrets.txt -out secrets.txt.enc

Descodificar:

openssl aes-256-cbc -d -a -in secrets.txt.enc -out secrets.txt.new
Mas isto não faz uso da infra-estrutura de chave pública, por isso é como martelar um prego com uma chave de fendas.
 192
Author: Szocske, 2013-10-08 04:33:25

Resposta Curta:

você provavelmente quer usar gpg em vez de openssl então veja "notas adicionais" no final desta resposta. Mas para responder à pergunta usando openssl:

Para Cifrar:

openssl enc -aes-256-cbc -in un_encrypted.data -out encrypted.data

Para Descodificar:

openssl enc -d -aes-256-cbc -in encrypted.data -out un_encrypted.data

Nota: ser-lhe-á pedida uma senha ao cifrar ou descodificar.


Resposta Longa:

A sua melhor fonte de informação para openssl enc provavelmente seria: GPG para fazer o mesmo, você usaria os seguintes comandos:

Para Cifrar:

gpg --output encrypted.data --symmetric --cipher-algo AES256 un_encrypted.data

Para Descodificar:

gpg --output un_encrypted.data --decrypt encrypted.data

Nota: ser-lhe-á pedida uma senha ao cifrar ou descodificar.

 106
Author: moo, 2017-05-23 11:33:24

Encriptação:

openssl enc -in infile.txt -out encrypted.dat -e -aes256 -k symmetrickey

Descodificar:

openssl enc -in encrypted.dat -out outfile.txt -d -aes256 -k symmetrickey

Para mais detalhes, consulte o openssl(1) docs.

 29
Author: Ken Cheung, 2014-05-04 21:13:12

Para Cifrar:

$ openssl bf < arquivo.txt > arquivo.txt.bf

Para Descodificar:

$ openssl bf -d < arquivo.txt.bf > arquivo.txt

Bf = = = Blowfish no modo CBC

 3
Author: fabio almeida, 2015-07-31 18:54:34

Actualizar usando uma chave pública gerada aleatoriamente.

Encypt:

openssl enc -aes-256-cbc -a -salt -in {raw data} -out {encrypted data} -pass file:{random key}

Descodificar:

openssl enc -d -aes-256-cbc -in {ciphered data} -out {raw data}

Tenho um tutorial completo sobre isto em http://bigthinkingapplied.com/key-based-encryption-using-openssl/

 3
Author: nneko, 2015-07-31 19:43:56

Existe um programa de código aberto que eu encontro online que usa o openssl para encriptar e descodificar ficheiros. Ele faz isso com uma única senha. A grande coisa sobre este script de código aberto é que ele apaga o arquivo original não encriptado, destruindo o arquivo. Mas a coisa perigosa é que uma vez que o arquivo original não criptografado é ido você tem que se certificar de que você se lembra de sua senha caso contrário eles não são outra maneira de descriptografar seu arquivo.

Aqui está o link. github

Https://github.com/EgbieAnderson1/linux_file_encryptor/blob/master/file_encrypt.py

 2
Author: Michael linkston, 2014-12-01 16:06:17

Lembre-se que o CLI do OpenSSL usa um algoritmo não-padrão fraco para converter a frase-senha para uma chave, e a instalação dos resultados do GPG em vários ficheiros adicionados à sua pasta pessoal e a execução de um processo de fundo do gpg-agent. Se quiser a portabilidade máxima e o controlo com as ferramentas existentes, poderá usar o PHP ou o Python para aceder às APIs de nível inferior e passar directamente numa tecla AES completa e IV.

Exemplo de Invocação do PHP via Bash:

IV='c2FtcGxlLWFlcy1pdjEyMw=='
KEY='Twsn8eh2w2HbVCF5zKArlY+Mv5ZwVyaGlk5QkeoSlmc='
INPUT=123456789023456

ENCRYPTED=$(php -r "print(openssl_encrypt('$INPUT','aes-256-ctr',base64_decode('$KEY'),OPENSSL_ZERO_PADDING,base64_decode('$IV')));")
echo '$ENCRYPTED='$ENCRYPTED
DECRYPTED=$(php -r "print(openssl_decrypt('$ENCRYPTED','aes-256-ctr',base64_decode('$KEY'),OPENSSL_ZERO_PADDING,base64_decode('$IV')));")
echo '$DECRYPTED='$DECRYPTED

Esta saída:

$ENCRYPTED=nzRi252dayEsGXZOTPXW
$DECRYPTED=123456789023456

Podias use também a função openssl_pbkdf2 do PHP para converter uma frase-senha para uma chave de forma segura.

 1
Author: zeroimpl, 2017-02-08 02:22:10