it-swarm.com.de

So erstellen Sie einen md5-Hash in Bash unter Mac OS X

Wie kann man mit bash einen MD5-Hash für einen String auf einem Mac erstellen? md5sum ist in meiner Umgebung nicht vorhanden. Ich habe eine man für md5 gemacht, aber ich bin verwirrt, was das wirklich bewirkt.

md5 "string"

gibt keinen Hash zurück.

41
WildBill

Das sollte funktionieren -

[jaypal:~/Temp] echo "this will be encrypted" | md5
72caf9daf910b5ef86796f74c20b7e0b

oder wenn Sie here string Notation bevorzugen, dann -

[jaypal:~/Temp] md5 <<< 'this will be encrypted'
72caf9daf910b5ef86796f74c20b7e0b

AKTUALISIEREN:

Auf der Seite man können Sie mit einer der folgenden Optionen herumspielen

-s string
        Print a checksum of the given string.

-p      Echo stdin to stdout and append the checksum to stdout.

-q      Quiet mode - only the checksum is printed out.  Overrides the -r option.


[jaypal:~/Temp] md5 -s 'this will be encrypted'
MD5 ("this will be encrypted") = 502810f799de274ff7840a1549cd028a

[jaypal:~/Temp] md5 -qs 'this will be encrypted'
502810f799de274ff7840a1549cd028a

Hinweis: MD5 erzeugt immer denselben Hash. Der Grund, warum Sie die Ausgabe von dem oben angegebenen Beispiel unterscheiden, ist auf einen Punkt in den Kommentaren zurückzuführen. Die ersten beiden Beispiele verwenden das nachfolgende newline-Zeichen, um den Hash zu erzeugen. Um dies zu vermeiden, können Sie Folgendes verwenden:  

[jaypal:~/Temp] echo -n "this will be encrypted" | md5
502810f799de274ff7840a1549cd028a
81
jaypal singh

Um zu erreichen, was Sie gefragt haben: 

md5 -s string

ausgaben: MD5 ("Zeichenfolge") = b45cffe084dd3d20d928bee85e7b0f21

17
user3842869

OSX verwendet md5, aber die meisten Unices verwenden md5sum.

Hier ist ein Abschnitt des rvmrc-Überprüfungscodes von rvm , der die korrekte md5-Binärdatei findet und sie umschließt.

__rvm_md5_for()
{
  if builtin command -v md5 > /dev/null; then
    echo "$1" | md5
  Elif builtin command -v md5sum > /dev/null ; then
    echo "$1" | md5sum | awk '{print $1}'
  else
    rvm_error "Neither md5 nor md5sum were found in the PATH"
    return 1
  fi

  return 0
}

(Code aus https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/rvmrc )

15
richo

Von der Kommandozeile aus:

md5 <<< "String to hash"
8a0a39505c5753ff64a0377ab0265509
1
Cameron E

Der richtige Weg wäre echo -n string | md5 anstelle von echo "string" | md5. (Ich verwende zsh)

Konvertieren Sie den von echo -n string | md5 angegebenen md5-Hash, und Sie erhalten string zurück. 

md5 -s string funktioniert auch, worauf hier bereits hingewiesen wird.

λ [~] → echo "string" | md5
b80fa55b1234f1935cea559d9efbc39a

λ [~] → echo -n string | md5
b45cffe084dd3d20d928bee85e7b0f21

λ [~] → md5 -s string
MD5 ("string") = b45cffe084dd3d20d928bee85e7b0f21
0
san1512

Alle anderen Antworten sind gültig. Ich möchte auchopensslvorschlagen:

➜ echo 'this will be hashed' | openssl md5
55be2dc2df2c1cc7bad72a0ecb338841

was dem folgenden entspricht

➜ echo 'this will be hashed' | openssl dgst -md5
# or
➜ openssl md5 <<< 'this will be hashed'
# or
➜ echo 'this will be hashed' | md5
0
Kyr