Je veux crypter un fichier en utilisant AES-256. Comment puis-je le faire rapidement et facilement, et comment puis-je - ou quelqu'un d'autre - le décrypter à nouveau ?
Réponses
Trop de publicités?Mentionner l'option récente ajoutée à openssl
depuis OpenSSL 1.1.0. Basé sur la réponse de stefano-palazzo :
openssl enc -aes-256-cbc -a -e -in input.tar.gz -out oupput.enc -pbkdf2 -iter 1000000 -md sha512
Il utilise un Fonction de dérivation des clés car cela rendrait le forçage brutal de mot de passe beaucoup plus facile.
Pour le décryptage :
openssl enc -aes-256-cbc -a -d -in output.tar.xz.enc -out output.tar.xz -pbkdf2 -iter 1000000 -md sha512
Expliquer les arguments :enc
représente le cryptage-aes-256-cbc
es une bonne façon d'utiliser un AES
Chiffre-a
base64 vos données après le cryptage ou avant le décryptage-d
décrypter-e
crypter-in
fichier en entrée-out
fichier de sortie-pbkdf2
strechs la clé de celui-ci serait difficile à briser Fonction de dérivation des clés-iter
itérations pour déchiffrer la clé, plus signifie plus de sécurité et un nombre adéquat est décrit. aquí-md sha512
remplace la fonction de hachage de PBKDF2 par SHA512, qui est plus sûre que la fonction SHA256 par défaut.-salt
n'est pas mentionné dans la commande parce qu'il est défini par défaut et qu'il s'agit d'un très bon moyen d'augmenter la sécurité, pourquoi est-il décrit aquí
Pour compléter la réponse de Stefano Palazzo, j'ai créé une petite fonction bash qui fonctionne de manière similaire à la commande base64.
Il va crypter un fichier en aes256, puis le coder en base64. Dans le cas inverse, il décodera en base64, décryptera, puis recrachera le texte original en clair.
aes256() {
decodeMe=""
isPipe="$([ ! -t 0 ] && echo "true" || echo "false")"
if [ "$1" = '-d' ] || [ "$1" = '--decode' ]; then
decodeMe="-d"
shift
fi
if [ "$isPipe" = "true" ]; then
read input
printf '%s\n' "$input" | openssl aes-256-cbc -a $decodeMe
exitCode="$?"
else
openssl aes-256-cbc -a $decodeMe -in "$*"
exitCode="$?"
fi
unset isPipe decodeMe input
return "$exitCode"
}
Utilisation :
echo "my string" | aes256
# enter aes-256-cbc encryption password
# Returns: U2FsdGVkX1++e/BhBGlNOzNvarqq7zI13S/hbiKVzXQ=
echo "U2FsdGVkX1++e/BhBGlNOzNvarqq7zI13S/hbiKVzXQ=" | aes256 -d
# enter aes-256-cbc decryption password
# Returns: my string
aes256 file.plain > file.crypt
# enter aes-256-cbc encryption password
aes256 -d file.crypt
# enter aes-256-cbc decryption password
# Spits out original unencrypted file.
- Réponses précédentes
- Plus de réponses