Vraag Hoe de MD5-hash van een string direct in de terminal te krijgen?


Hoe krijg ik de MD5 hash van een string rechtstreeks van de terminal?

Ik wil bijvoorbeeld de string abcdefg hash. Momenteel is het md5sum opdracht accepteert alleen een bestandsnaam als invoer. Ik wil gewoon de volgende regel invoeren en alles doen met.

md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f

Hoe kan ik dat bereiken?


151
2017-07-20 11:08


oorsprong


md5 -s abcdefg - raitisd


antwoorden:


Je kunt ook zoiets zeggen als dit:

~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4  -

Het doet in principe hetzelfde als beschreven door @enzotib, maar is misschien een beetje eenvoudiger.


198
2017-07-20 11:47



U wilt ook het voorbeeldresultaat bijwerken, want 7803ffca ... is het resultaat met de toegevoegde nieuwe regel. Het juiste resultaat voor bovenstaande opdracht is 83218ac34c1834c26781fe4bde918ee4 - - Xanthir
waarom zijn er spaties en een streepje aan het einde? - keune
Corrigeer me als ik ongelijk heb, maar ik denk dat dit komt omdat de MD5sum is toegepast op een gegevensstroom, in tegenstelling tot het lezen van een bestandsinhoud, waaraan een naam is gekoppeld. - jfmessier
Merk op dat de -n is verplicht. Zonder dit is uw hash helemaal verkeerd aangezien deze het nieuwelijnteken bevat. - Pithikos
Dit heeft me ook op macOS geholpen, hoewel het iets anders is: echo -n Welcome | md5 - Edward J. Stembler


Heel eenvoudig, het accepteert stdin, dus

md5sum <<<"my string"

Om te voorkomen dat de volgende nieuwe regel wordt toegevoegd door de shell:

printf '%s' "my string" | md5sum

58
2017-07-20 11:10



Zowel @messier als @enzotib een stem geven; beide vallen in mijn gewaardeerde categorie "elegante eenvoud". Ik zou geneigd zijn om de <<<" pijp in een script; echo string wint voor de commandoregel. Goed gedaan. - Tom
+1 voor gebruik printfcorrect. Als je de som wilt hebben zonder de -, leggen | cut -d ' ' -f 1. Voorbeeld gebruik: sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1) - Lekensteyn
het is raar maar de <<< operator en de printf functie geeft geheel andere resultaten voor md5 hash! het resultaat van printf is echter correct! - Hamed Momeni
het lijkt het gebruik van de <<< operator stuurt een nieuwe regel naar de md5sum! - Hamed Momeni
Ja, dat klopt, zoals ik al zei tussen het eerste en het tweede voorbeeld - enzotib


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

je kunt een shellscript maken.

De scriptnaam is bijvoorbeeld md5.sh:

#!/bin/bash

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

toestemming uitvoeren:

 chmod +x md5.sh

Dan:

$ md5.sh 123456
e10adc3949ba59abbe56e057f20f883e

Als uw systeem macOS is. U moet dit script wijzigen:

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

21
2018-03-09 04:54



Dit is gewoon te lang. - Gucho Ca
alternatief voor awk: cut -d ' ' -f 1 - Blauhirn


Als md5sum wordt uitgevoerd zonder argumenten, wordt de invoer van de terminal gelezen. Typ of plak wat je wilt en als je klaar bent, druk je op ctrl-d om de invoer te beëindigen.


9
2017-07-27 15:46



ja, je hebt ook gelijk. maar ctrl+d moet twee keer worden ingedrukt om te laten werken. - Hamed Momeni
@James, als het geen nieuwe regel volgt, ja. Als je erop slaat nadat je op enter hebt getikt, hoeft deze maar één keer te worden gebruikt. Wanneer het geen nieuwe regel volgt, dwingt het alle tekens die op de regel zijn getypt tot nu toe onmiddellijk te worden verwerkt in plaats van te wachten op een nieuwe regel. - psusi


openssl md5 filename
openssl sha1 filename

Voor stringpipe de inhoud met behulp van echo

echo -n 123456 | openssl md5

8
2017-12-10 11:13





Mijn snelle por op de --help voor md5sum laat zien dat het commando:

md5sum -

geeft dan een prompt voor eenvoudige invoer. Tekst invoeren en vervolgens gebruiken invoeren en dan Ctrl+D om aan te geven dat het einde van het bestand dan veroorzaakt md5sum om de MD5 uit te spuwen van de onbewerkte tekst die je hebt ingevoerd (inclusief die invoeren, het is een CR, IIRC).

Minder te typen en geen piping! En voorkomen dat uw leesbare wachtwoord in de geschiedenis van de shell wordt opgenomen! Woo!

Als je dat achterliggende CR niet wilt (wat meestal het geval is als je een wachtwoord wilt hashen), raak dan niet invoeren voor Ctrl+D, ga naar binnen Ctrl+D in plaats daarvan twee keer.


3
2017-08-21 06:00





In mijn scripts ontdekte ik dat er 2 dingen zijn die u over dit probleem moet weten.

  • Het maakt niet uit of je het doet echo "$myvariable" of echo -n "$myvariable" maar gebruik altijd de doubleqoutes voor tekenreeksen en gebruik altijd dezelfde methode. zo niet, dan komen dingen niet overeen.
  • in de uitvoer krijg je altijd een volgspaties en een streepje zoals in het voorbeeld:

    $ echo -n Welcome | md5sum
    7803ffcaea43bb81a439fde13b29bc35  -
    

om daar vanaf te komen en alleen met de code te blijven 7803ffcaea43bb81a439fde13b29bc35, do: echo "$myvariable" | md5sum | cut -d" " -f1


2
2017-08-02 13:39



Vergeet het -n parameter om te voorkomen dat de volgende nieuwe regel wordt uitgevoerd, wat zou leiden tot een verkeerde md5: echo -n $myvariable | md5sum | cut -d" " -f1 - derFunk