Domanda Come ottenere l'hash MD5 di una stringa direttamente nel terminale?


Come ottengo il MD5 hash di una stringa direttamente dal terminale?

Ad esempio, voglio la stringa abcdefg hash. Attualmente il md5sum comando accetta solo un nome file come input. Voglio semplicemente inserire la seguente riga e fare tutto con.

md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f

Come posso ottenerlo?


151
2017-07-20 11:08


origine


md5 -s abcdefg - raitisd


risposte:


Puoi anche dire qualcosa del genere:

~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4  -

Fondamentalmente fa la stessa cosa descritta da @enzotib, ma è forse un po 'più semplice.


198
2017-07-20 11:47



Inoltre, si desidera aggiornare il risultato dell'esempio, poiché 7803ffca ... è il risultato con la nuova riga aggiunta. Il risultato corretto per il comando sopra è 83218ac34c1834c26781fe4bde918ee4 - - Xanthir
perché ci sono spazi e un trattino alla fine? - keune
Per favore correggimi se sbaglio, ma penso che questo sia dovuto al fatto che MD5sum è stato applicato a un flusso di dati, a differenza della lettura di un contenuto di file, a cui è associato un nome. - jfmessier
Si noti che il -n è obbligatorio. Senza di esso, il tuo hash sarà totalmente sbagliato poiché include il carattere di nuova riga. - Pithikos
Questo mi ha aiutato anche su macOS, anche se è leggermente diverso: echo -n Welcome | md5 - Edward J. Stembler


Molto semplice, accetta lo stdin, quindi

md5sum <<<"my string"

Per evitare la nuova riga finale aggiunta dalla shell:

printf '%s' "my string" | md5sum

58
2017-07-20 11:10



Dando un voto a @messier e @enzotib; entrambi rientrano nella mia preziosa categoria "elegante semplicità". Sarei adatto a usare il <<<" pipe in uno script; echo string vince per la linea di comando. Molto bene. - Tom
+1 per l'utilizzo printfcorrettamente. Se vuoi avere la somma senza il -, mettere | cut -d ' ' -f 1. Esempio di utilizzo: sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1) - Lekensteyn
è strano ma il <<< operatore e il printf la funzione sta dando risultati completamente diversi per l'hash md5! il risultato di printf è corretto però! - Hamed Momeni
sembra usare il <<< l'operatore invia una nuova riga al md5sum! - Hamed Momeni
Sì, lo fa, come ho detto tra il primo e il secondo esempio - enzotib


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

puoi creare uno script di shell.

Ad esempio, il nome dello script è md5.sh:

#!/bin/bash

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

permesso di esecuzione:

 chmod +x md5.sh

Poi:

$ md5.sh 123456
e10adc3949ba59abbe56e057f20f883e

Se il tuo sistema è macOS. È necessario modificare questo script:

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

21
2018-03-09 04:54



Questo è troppo lungo. - Gucho Ca
alternativa a awk: cut -d ' ' -f 1 - Blauhirn


L'esecuzione di md5sum senza argomenti lo indurrà a leggere l'input dal terminale. Digita o incolla quello che vuoi, e quando hai finito, premi ctrl-d per terminare l'input.


9
2017-07-27 15:46



sì, hai ragione anche tu. ma ctrl+d deve essere premuto due volte affinché funzioni. - Hamed Momeni
@James, se non segue una nuova riga, sì. Se lo colpisci dopo aver premuto enter, è necessario solo una volta. Quando non segue una nuova riga, impone solo tutti i caratteri digitati sulla riga fino a quel punto per essere elaborati immediatamente invece di aspettare una nuova riga. - psusi


openssl md5 filename
openssl sha1 filename

Per string pipe il contenuto usando echo

echo -n 123456 | openssl md5

8
2017-12-10 11:13





Il mio colpo rapido al --help per md5sum dimostra che il comando:

md5sum -

darà quindi una richiesta di input semplice. Inserimento di testo e quindi utilizzo accedere e poi Ctrl+D per significare fine del file poi cause md5sum per sputare l'MD5 del testo non elaborato inserito (incluso quello accedere, è un CR, IIRC).

Meno da scrivere e niente piping! Ed evitando che la tua password in chiaro venga registrata nella cronologia della shell! Corteggiare!

Se non si desidera che il CR finale (che di solito è il caso se si desidera hash una password), non colpire accedere prima Ctrl+D, accedere Ctrl+D due volte invece.


3
2017-08-21 06:00





Nei miei script ho trovato che ci sono 2 cose che dovresti sapere su questo problema.

  • Non importa se lo fai echo "$myvariable" o echo -n "$myvariable" ma dovresti sempre usare il doubleqoutes per le stringhe e usare sempre lo stesso metodo. se non le cose non combaceranno.
  • nell'output si ottiene sempre uno spazio finale e un trattino come mostrato nell'esempio:

    $ echo -n Welcome | md5sum
    7803ffcaea43bb81a439fde13b29bc35  -
    

per sbarazzarsi di quello e rimanere solo con il codice 7803ffcaea43bb81a439fde13b29bc35, fare: echo "$myvariable" | md5sum | cut -d" " -f1


2
2017-08-02 13:39



Non dimenticare il -n parametro qui per evitare di emettere la newline finale, che porterebbe a un md5 sbagliato: echo -n $myvariable | md5sum | cut -d" " -f1 - derFunk