
Ich versuche, den MD5-Hash einer Zeichenfolge zu erhalten. Die Zeichenfolge besteht nur aus Groß- und Kleinbuchstaben sowie Ziffern. Keine anderen Zeichen, einschließlich Leerzeichen und Zeilenumbrüche. Die Zeichenfolge wird über eine Tastatur und nicht über eine Datei eingegeben, daher sind weder BOM noch andere Flags vorhanden.
Wenn ich es lokal ausführe, md5sum
erhalte ich die folgende Ausgabe:
ubuntu@ubuntu:~$ echo word | md5sum
a46ec67a0f2e7c387926ac5d783ea4b8 -
ubuntu@ubuntu:~$ echo "word" | md5sum
a46ec67a0f2e7c387926ac5d783ea4b8 -
ubuntu@ubuntu:~$ echo "word" -n | md5sum
3a21ca21563e9535a9012daef61a0bdf -
Ich kenne den Unterschied zwischen der 2. und 3. Ausgabe obenliegt am Fehlen des Zeilenumbruchzeichens( . (Es stellte sich heraus, dass dies nicht der Fall war! Siehe die akzeptierte Antwort.)-n
).Dieser Teil ist mir klar
Es gibt jedoch Tools, die ein drittes Ergebnis liefern. Alle Nicht-CLI-Tools scheinen zu lieferndas gleicheErgebnis, und das ist es, was mich verwirrt:
- http://www.miraclesalad.com/webtools/md5.phpsagt, es ist
c47d187067c6cf953245f128b5fde62a
. - http://www.md5hashgenerator.com/sagt, es ist
c47d187067c6cf953245f128b5fde62a
. - http://www.md5.cz/sagt, es ist
c47d187067c6cf953245f128b5fde62a
. - http://www.md5online.org/md5-encrypt.htmlsagt, es ist
c47d187067c6cf953245f128b5fde62a
. - http://md5-hash-online.waraxe.us/sagt, es ist
c47d187067c6cf953245f128b5fde62a
. - Diese Android-Appsagt, es ist
c47d187067c6cf953245f128b5fde62a
. echo -n "word" | unix2dos | md5sum
gibt mirc47d187067c6cf953245f128b5fde62a
.
Was ist denn hier los?
Antwort1
$ echo "word" -n | md5sum
3a21ca21563e9535a9012daef61a0bdf -
$ echo "word -n" | md5sum
3a21ca21563e9535a9012daef61a0bdf -
$ echo "-n" word | md5sum
c47d187067c6cf953245f128b5fde62a -
Beachten Sie insbesondere Folgendes:
$ echo "word" -n
word -n
Alle Optionen müssen vor Argumenten ohne Optionen stehen. Dies ist in den meisten Programmen mit Ausnahme einiger GNU-Dienstprogramme der Fall und gilt für alle Implementierungen von echo
( echo
ist jedoch insofern besonders, als die meisten Zeichenfolgen, die mit beginnen, -
als Argumente interpretiert werden, nur wenige Optionen werden als solche erkannt).