Question Chiffrer une chaîne à l'aide de la ligne de commande openssl


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

Cette chaîne cryptée (dans un format lisible par l'homme) doit ensuite être fournie à un utilisateur qui l'utilisera, et la chaîne sera déchiffrée à son format d'origine de 16 octets pour comparaison et authentification. Quelqu'un pourrait-il s'il vous plaît me dire comment cela serait possible avec la ligne de commande openssl.

Merci d'avance.


22
2018-04-11 13:21


origine


Réponses:


Voici une façon de chiffrer une chaîne avec openssl sur la ligne de commande (doit 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: A ma connaissance, vous ne pouvez pas contrôler le nombre d'octets en sortie. Vous pouvez b64 ou hex coder, mais c'est à ce sujet. En outre, si vous souhaitez enregistrer cette chaîne dans un fichier plutôt que dans stdout, utilisez l'option -out.


22
2018-04-11 23:29



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

Je crois que vous recherchez un cryptage de conservation de format. Je pense que la mise en garde est que vous devez commencer avec une chaîne lisible de 16 octets. Phillip Rogaway a un article sur les technologies: Synopsis de Cryptage préservant le format. Il y a beaucoup de choses dans le papier, et cela ne peut pas figurer dans un seul paragraphe sur le débordement de la pile.

Si vous pouvez commencer avec une chaîne plus courte et utiliser un mode de diffusion comme OCB, OFB ou CTR, Base64 peut encoder la chaîne finale de sorte que le résultat soit 16 octets et lisible par l'homme. Base64 se développe à un taux de 3 → 4 (3 non codés se développent à 4 encodés), vous avez donc besoin d'une chaîne plus courte de 12 caractères pour atteindre 16 caractères lisibles par l'homme.

Pour autant que je sache, il n'y a pas d'outils en ligne de commande qui le font en mode natif. Vous pourrez peut-être utiliser OpenSSL sur la ligne de commande avec AES / CTR et le transférer base64 commander. 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

Également vraiment besoin de comprendre te -k option (et -K d'ailleurs), et comment il dérive une clé pour que vous puissiez le faire en dehors de la commande OpenSSL (si nécessaire).


5
2017-07-31 18:55



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
2017-07-26 05:33



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.


1
2017-11-27 18:59