92 votes

Comment crypter rapidement un fichier avec AES ?

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 ?

4voto

FazeL Points 141

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í

2voto

user76733 Points 61

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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X