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


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

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

md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f

Comment puis-je y arriver?


151
2017-07-20 11:08


origine


md5 -s abcdefg - raitisd


Réponses:


Vous pouvez aussi dire quelque chose comme ceci:

~$ 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.


198
2017-07-20 11:47



Vous voulez également mettre à jour le résultat de l'exemple, car 7803ffca ... est le résultat avec la nouvelle ligne ajoutée. Le résultat correct pour la commande ci-dessus est 83218ac34c1834c26781fe4bde918ee4 - - Xanthir
pourquoi y a-t-il des espaces et un tiret à la fin? - keune
Corrigez-moi si je me trompe, mais je pense que c'est parce que le MD5sum a été appliqué à un flux de données, par opposition à la lecture d'un contenu de fichier auquel un nom est associé. - jfmessier
Notez que le -n est obligatoire. Sans elle, votre hachage sera totalement faux, car il inclut le caractère de nouvelle ligne. - Pithikos
Cela m'a aidé aussi sur MacOS, bien que ce soit légèrement différent: echo -n Welcome | md5 - Edward J. Stembler


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

58
2017-07-20 11:10



Donner à @messier et @enzotib un vote; les deux relèvent de ma catégorie "élégante simplicité". Je serais susceptible d'utiliser le <<<" pipe dans un script; echo string gagne pour la ligne de commande. Bien joué. - Tom
+1 pour utiliser printfcorrectement. Si vous voulez avoir la somme sans le -, mettre | cut -d ' ' -f 1. Exemple d'utilisation: sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1) - Lekensteyn
c'est bizarre mais le <<< l'opérateur et le printf fonction donnent des résultats complètement différents pour md5 hash! le résultat de printf est correct cependant! - Hamed Momeni
il semble utiliser le <<< L'opérateur envoie une nouvelle ligne au md5sum! - Hamed Momeni
Oui, comme je l'ai dit entre le premier et le deuxième exemple - 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 exécuter:

 chmod +x md5.sh

Alors:

$ md5.sh 123456
e10adc3949ba59abbe56e057f20f883e

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

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

21
2018-03-09 04:54



C'est juste trop long. - Gucho Ca
alternative à awk: cut -d ' ' -f 1 - Blauhirn


Si vous exécutez md5sum sans aucun argument, vous lirez l’entrée du terminal. Tapez ou collez ce que vous voulez et lorsque vous avez terminé, appuyez sur ctrl-d pour terminer la saisie.


9
2017-07-27 15:46



oui, vous avez raison aussi. mais ctrl+d doit être pressé deux fois pour que cela fonctionne. - Hamed Momeni
@James, si elle ne suit pas une nouvelle ligne, oui. Si vous le touchez après avoir appuyé sur Entrée, il ne vous en faut qu'une fois. Lorsqu'il ne suit pas une nouvelle ligne, il force simplement le traitement immédiat de tous les caractères saisis sur la ligne au lieu d'attendre une nouvelle ligne. - psusi


openssl md5 filename
openssl sha1 filename

Pour string pipe le contenu en utilisant echo

echo -n 123456 | openssl md5

8
2017-12-10 11:13





Mon coup de coude au --help pour md5sum démontre que la commande:

md5sum -

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

Moins à taper et pas de tuyauterie! Et en évitant que votre mot de passe en texte clair ne soit enregistré dans l’historique du shell! Courtiser!

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


3
2017-08-21 06:00





Dans mes scripts, j'ai constaté qu'il y avait 2 choses à savoir sur ce problème.

  • Ce n'est pas grave si vous faites 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 correspondent pas.
  • dans la sortie, vous obtenez toujours un espace de fin et un tiret comme indiqué dans l'exemple:

    $ echo -n Welcome | md5sum
    7803ffcaea43bb81a439fde13b29bc35  -
    

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


2
2017-08-02 13:39



N'oubliez pas le -n paramètre ici pour éviter de sortir la nouvelle ligne de suivi, ce qui conduirait à un md5 erroné: echo -n $myvariable | md5sum | cut -d" " -f1 - derFunk