Comment puis-je obtenir le hachage MD5 d'une chaîne directement à partir du terminal?
Par exemple, je veux que la chaîne abcdefg
hashed. 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?
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.
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
$ 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
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.
openssl md5 filename
openssl sha1 filename
Pour la chaîne, faites passer le contenu à l'aide d'écho
echo -n 123456 | openssl md5
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.
Dans mes scripts, j'ai constaté qu'il y a 2 choses que vous devriez savoir sur ce problème.
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
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 -