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?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.
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.
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.
Para Cifrar:
$ openssl bf < arquivo.txt > arquivo.txt.bf
Para Descodificar:
$ openssl bf -d < arquivo.txt.bf > arquivo.txt
Bf = = = Blowfish no modo CBC
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/
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. githubHttps://github.com/EgbieAnderson1/linux_file_encryptor/blob/master/file_encrypt.py
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.