web-dev-qa-db-fra.com

Comment obtenir le hachage MD5 d'une chaîne directement dans le terminal?

Comment puis-je obtenir le hachage MD5 d'une chaîne directement à partir du terminal?

Par exemple, je veux que la chaîne abcdefghashed. Actuellement, la commande md5sum accepte uniquement un nom de fichier en entrée. Je veux simplement entrer la ligne suivante et tout se faire avec.

md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f

Comment puis-je y arriver?

182
Hamed Momeni

Vous pouvez aussi dire quelque chose comme ça:

~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4  -

Il fait fondamentalement la même chose que décrite par @enzotib, mais est peut-être un peu plus simple.

243
jfmessier

Très simple, il accepte stdin, donc

md5sum <<<"my string"

Pour éviter la nouvelle ligne de fin ajoutée par le shell:

printf '%s' "my string" | md5sum
60
enzotib
$ echo -n 123456 | md5sum | awk '{print $1}'
e10adc3949ba59abbe56e057f20f883e

vous pouvez créer un script shell.

Par exemple, le nom du script est md5.sh:

#!/bin/bash

echo   -n   $1 | md5sum | awk '{print $1}'

permission execute:

 chmod +x md5.sh

Ensuite:

$ md5.sh 123456
e10adc3949ba59abbe56e057f20f883e

Si votre système est macOS. Vous devez modifier ce script:

$ echo -n 123456 | md5 | awk '{print $1}' 
e10adc3949ba59abbe56e057f20f883e
26
ty4z2008

L'exécution de md5sum sans aucun argument entraînera la lecture des entrées du terminal. Tapez ou collez ce que vous voulez et, lorsque vous avez terminé, appuyez sur ctrl-d pour mettre fin à la saisie.

10
psusi
openssl md5 filename
openssl sha1 filename

Pour la chaîne, faites passer le contenu à l'aide d'écho

echo -n 123456 | openssl md5
9
guest

Mon rapide coup au --help pour md5sum montre que la commande:

md5sum -

donnera alors une invite pour une saisie simple. Saisir du texte puis utiliser Enter et alors Ctrl+D pour signifier la fin du fichier provoque alors md5sum cracher le MD5 du texte brut que vous avez entré (y compris celui Enter, c’est un CR, IIRC).

Moins de dactylographie et pas de tuyauterie! Et en évitant que votre mot de passe en texte brut soit enregistré dans l'historique Shell! Courtiser!

Si vous ne voulez pas que le dernier CR (ce qui est généralement le cas si vous voulez hacher un mot de passe), ne cliquez pas sur Enter avant Ctrl+D, entrer Ctrl+D deux fois à la place.

4
Will

Dans mes scripts, j'ai constaté qu'il y a 2 choses que vous devriez savoir sur ce problème.

  • Peu importe si vous utilisez echo "$myvariable" ou echo -n "$myvariable", mais vous devez toujours utiliser les doublesQoutes pour les chaînes et toujours utiliser la même méthode. sinon les choses ne vont pas correspondre.
  • dans la sortie, vous obtenez toujours un espace de fin et un tiret, comme indiqué dans l'exemple:

    $ echo -n Welcome | md5sum
    7803ffcaea43bb81a439fde13b29bc35  -
    

pour vous en débarrasser et ne rester qu'avec le code 7803ffcaea43bb81a439fde13b29bc35, faites: echo "$myvariable" | md5sum | cut -d" " -f1

2
Bodo Hugo Barwich

Il existe de nombreux exemples pour ce faire, mais certains d'entre eux ne sont pas équivalents car certains incluent explicitement ou implicitement le retour à la ligne, d'autres pas.

Je voudrais spécifier clairement laquelle des méthodes populaires inclut la nouvelle ligne et celles qui ne le sont pas.

Voici quelques exemples pour calculer le hachage md5 SANS nouvelle ligne (CORRECT):

Utiliser un fichier avec du texte:

$ echo -n "test" > test.txt
$ wc test.txt
0 1 4 test.txt
$ md5sum test.txt
098f6bcd4621d373cade4e832627b4f6  test.txt

Remarque: -n in echo signifie: "ne pas afficher le retour à la ligne final".

Utilisation de echo avec -n inline:

$ echo -n "test" | md5sum
098f6bcd4621d373cade4e832627b4f6  -

Utilisation de printf:

$ printf "%s" "test" | md5sum
098f6bcd4621d373cade4e832627b4f6  -

En utilisant uniquement la commande md5sum:

(Écrivons md5sum, appuyez sur Enter puis écrivez la chaîne test puis appuyez sur la combinaison double Ctrl+d)

$ md5sum
test098f6bcd4621d373cade4e832627b4f6  -

Utilisation de la commande md5sum -:

(Écrivons md5sum -, appuyez sur Enter puis écrivez la chaîne test puis appuyez sur la combinaison double Ctrl+d)

$ md5sum -
test098f6bcd4621d373cade4e832627b4f6  -

Voici quelques exemples pour calculer le hachage md5 AVEC une nouvelle ligne (SO NOT CORRECT):

Utiliser un fichier avec du texte:

$ echo "test" > test_n.txt
$ wc test_n.txt
1 1 5 test_n.txt
$ md5sum test_n.txt
d8e8fca2dc0f896fd7cb4cb0031ba249  test_n.txt

Utilisation de echo WITHOUT -n inline:

echo "test" | md5sum
d8e8fca2dc0f896fd7cb4cb0031ba249  -

Utiliser ici des chaînes :

$ md5sum <<< "test"
d8e8fca2dc0f896fd7cb4cb0031ba249  -

Utiliser uniquement la commande md5sum mais avec Enter touche après avoir écrit le texte:

(Écrivons md5sum, appuyez sur Enter puis écrivez la chaîne test puis appuyez sur agaien Enter et une fois la combinaison Ctrl+d)

$ md5sum
test
d8e8fca2dc0f896fd7cb4cb0031ba249  -

Utiliser la commande md5sum - mais avec Enter touche après avoir écrit le texte:

(Écrivons md5sum -, appuyez sur Enter puis écrivez la chaîne test puis appuyez sur agaien Enter et une fois la combinaison Ctrl+d)

$ md5sum -
test
d8e8fca2dc0f896fd7cb4cb0031ba249  -
1
simhumileco