302 votes

Comment utiliser OpenSSL pour crypter/décrypter des fichiers ?

Je veux crypter et décrypter un fichier en utilisant un seul mot de passe.

Comment puis-je utiliser OpenSSL pour faire cela ?

8voto

nneko Points 21

Mise à jour à l'aide d'une clé publique générée de manière aléatoire.

Encypt :

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

Décrypter :

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

8voto

Fábio Almeida Points 171

Pour crypter :

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

Pour décrypter :

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

bf === Blowfish en mode CBC

3voto

Il existe un programme open source que j'ai trouvé en ligne et qui utilise openssl pour crypter et décrypter les fichiers. Il le fait avec un seul mot de passe. L'avantage de ce script open source est qu'il supprime le fichier original non crypté en le déchiquetant. Mais ce qui est dangereux, c'est qu'une fois que le fichier original non crypté a disparu, vous devez vous assurer que vous vous souvenez de votre mot de passe, sinon il n'y a pas d'autre moyen de décrypter votre fichier.

Voici le lien qu'il y a sur github

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

2voto

zerotool Points 475

Notez que le CLI OpenSSL utilise un algorithme faible et non standard pour convertir la phrase de passe en une clé, et que l'installation de GPG entraîne l'ajout de divers fichiers dans votre répertoire personnel et l'exécution d'un processus d'arrière-plan gpg-agent. Si vous souhaitez bénéficier d'un maximum de portabilité et de contrôle avec les outils existants, vous pouvez utiliser PHP ou Python pour accéder aux API de niveau inférieur et transmettre directement une clé AES complète et un IV.

Exemple d'invocation de 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

Cette sortie :

$ENCRYPTED=nzRi252dayEsGXZOTPXW
$DECRYPTED=123456789023456

Vous pouvez également utiliser la fonction openssl_pbkdf2 pour convertir une phrase de passe en clé de manière sécurisée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X