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

148

Come faccio ad ottenere l'hash MD5 di una stringa direttamente dal terminale?

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

md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f

Come posso ottenerlo?

    
posta Hamed Momeni 20.07.2011 - 13:08

7 risposte

194

Puoi anche dire qualcosa del tipo:

~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4  -

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

    
risposta data jfmessier 20.07.2011 - 13:47
58

Molto semplice, accetta lo stdin, quindi

md5sum <<<"my string"

Per evitare la nuova riga finale aggiunta dalla shell:

printf '%s' "my string" | md5sum
    
risposta data enzotib 20.07.2011 - 13:10
19
$ echo -n 123456 | md5sum | awk '{print }'
e10adc3949ba59abbe56e057f20f883e

puoi creare uno script di shell.

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

#!/bin/bash

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

Esecuzione autorizzazione:

 chmod +x md5.sh

Quindi:

$ md5.sh 123456
e10adc3949ba59abbe56e057f20f883e

Se il tuo sistema è macOS. Devi modificare questo script:

$ echo -n 123456 | md5 | awk '{print }' 
e10adc3949ba59abbe56e057f20f883e
    
risposta data ty4z2008 09.03.2015 - 05:54
9

L'esecuzione di md5sum senza argomenti causerà la lettura dell'input dal terminale. Digita o incolla quello che vuoi, e quando hai finito, premi ctrl-d per terminare l'input.

    
risposta data psusi 27.07.2011 - 17:46
8
openssl md5 filename
openssl sha1 filename

Per string pipe il contenuto usando echo

echo -n 123456 | openssl md5
    
risposta data guest 10.12.2015 - 12:13
3

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

md5sum -

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

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

Se non vuoi che il CR finale (che di solito è il caso se vuoi hash una password), non premi Invio prima di Ctrl + D , inserisci invece Ctrl + D due volte.

    
risposta data Will 21.08.2013 - 08:00
2

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

  • Non importa se 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 combaciano.
  • nell'output si ottiene sempre uno spazio finale e un trattino come mostrato nell'esempio:

    $ echo -n Welcome | md5sum
    7803ffcaea43bb81a439fde13b29bc35  -
    

per sbarazzartene e resta solo con il codice 7803ffcaea43bb81a439fde13b29bc35 , do: echo "$myvariable" | md5sum | cut -d" " -f1

    
risposta data Bodo Hugo Barwich 02.08.2014 - 15:39

Leggi altre domande sui tag