web-dev-qa-db-fra.com

Crypter une chaîne en utilisant la ligne de commande openssl

J'ai un caractère de 16 octets que je voudrais chiffrer avec openssl en une chaîne chiffrée de 16 octets.

Cette chaîne chiffrée (au format lisible par l'homme) doit ensuite être fournie à un utilisateur qui l'utilisera. La chaîne serait déchiffrée au format 16 octets d'origine à des fins de comparaison et d'authentification. Quelqu'un pourrait-il me dire comment cela serait possible avec openssl commandline.

Merci d'avance. 

25
arun nath

Voici un moyen de chiffrer une chaîne avec openssl sur la ligne de commande (vous devez entrer le mot de passe deux fois):

echo -n "aaaabbbbccccdddd" | openssl enc -e -aes-256-cbc -a -salt
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:

Voici à quoi ressemble la sortie:

U2FsdGVkX1/6LATntslD80T2HEIn3A0BqxarNfwbg31D2kI00dYbmBo8Mqt42PIm

Edit: À ma connaissance, vous ne pouvez pas contrôler le nombre d'octets sortants. Vous pouvez le coder en b64 ou en hex, mais c'est à peu près tout. De même, si vous souhaitez enregistrer cette chaîne dans un fichier plutôt que stdout, utilisez l'option -out.

23
01100110

J'ai un caractère de 16 octets que je voudrais chiffrer avec openssl en une chaîne chiffrée de 16 octets [au format lisible par l'homme]

Je crois que vous recherchez un format préservant le cryptage. Je pense que la mise en garde est que vous devez commencer par une chaîne lisible par l'homme de 16 octets. Phillip Rogaway a rédigé un article sur les technologies: Synopsis de Format-Preserving Encryption . Le papier est très volumineux et ne peut pas être inséré dans un seul paragraphe sur Stack Overflow.

Si vous pouvez commencer avec une chaîne plus courte et utiliser un mode de diffusion en continu tel que OCB, OFB ou CTR, vous pouvez alors encoder en Base64 la dernière chaîne de sorte que le résultat obtenu soit 16 octets et lisible par l'homme. Base64 se développe à un taux de 3 → 4 (3 codés non codés à 4 codés), il vous faudrait donc une chaîne plus courte de 12 caractères pour obtenir 16 caractères lisibles par l'homme.

Autant que je sache, aucun outil en ligne de commande ne le fait en natif. Vous pourrez peut-être utiliser OpenSSL sur la ligne de commande avec AES/CTR et le rediriger vers la commande base64. Ce qui suit se rapproche, mais il commence par 11 caractères (et non 12):

$ echo 12345678901 | openssl enc -e -base64 -aes-128-ctr -nopad -nosalt -k secret_password
cSTzU8+UPQQwpRAq

De plus, vous vraiment devez comprendre l'option -k (et -K d'ailleurs) et la manière dont elle dérive une clé afin de pouvoir le faire en dehors de la commande OpenSSL (si nécessaire).

5
jww

Essaye ça: 

echo 'foo' | openssl aes-256-cbc -a -salt
echo 'U2FsdGVkX1/QGdl4syQE8bLFSr2HzoAlcG299U/T/Xk=' | openssl aes-256-cbc -a -d -salt

Courir 

openssl list-cipher-commands 

pour lister tous les chiffres disponibles.

3
bill gott

essaye ça 

$ echo "a_byte_character" | openssl enc -base64

et vous avez plus de 100 types de chiffrement

-aes-128-cbc               -aes-128-cfb               -aes-128-cfb1             
-aes-128-cfb8                  -aes-128-ctr               -aes-128-ecb              
-aes-128-gcm               -aes-128-ofb               -aes-128-xts              
-aes-192-cbc               -aes-192-cfb               -aes-192-cfb1             
-aes-192-cfb8              -aes-192-ctr               -aes-192-ecb              
-aes-192-gcm               -aes-192-ofb               -aes-256-cbc              
-aes-256-cfb               -aes-256-cfb1              -aes-256-cfb8             
-aes-256-ctr               -aes-256-ecb               -aes-256-gcm              
-aes-256-ofb               -aes-256-xts               -aes128                   
-aes192                    -aes256                    -bf                       
-bf-cbc                    -bf-cfb                    -bf-ecb                   
-bf-ofb                    -blowfish                  -camellia-128-cbc         
-camellia-128-cfb          -camellia-128-cfb1         -camellia-128-cfb8        
-camellia-128-ecb          -camellia-128-ofb          -camellia-192-cbc         
-camellia-192-cfb          -camellia-192-cfb1         -camellia-192-cfb8        
-camellia-192-ecb          -camellia-192-ofb          -camellia-256-cbc         
-camellia-256-cfb          -camellia-256-cfb1         -camellia-256-cfb8        
-camellia-256-ecb          -camellia-256-ofb          -camellia128              
-camellia192               -camellia256               -cast                     
-cast-cbc                  -cast5-cbc                 -cast5-cfb                
-cast5-ecb                 -cast5-ofb                 -des                      
-des-cbc                   -des-cfb                   -des-cfb1                 
-des-cfb8                  -des-ecb                   -des-ede                  
-des-ede-cbc               -des-ede-cfb               -des-ede-ofb              
-des-ede3                  -des-ede3-cbc              -des-ede3-cfb             
-des-ede3-cfb1             -des-ede3-cfb8             -des-ede3-ofb             
-des-ofb                   -des3                      -desx                     
-desx-cbc                  -id-aes128-GCM             -id-aes192-GCM            
-id-aes256-GCM             -rc2                       -rc2-40-cbc               
-rc2-64-cbc                -rc2-cbc                   -rc2-cfb                  
-rc2-ecb                   -rc2-ofb                   -rc4                      
-rc4-40                    -rc4-hmac-md5              -seed                     
-seed-cbc                  -seed-cfb                  -seed-ecb                 
-seed-ofb                  
1
NIMISHAN