Warum passt mein md5sum-Hash nicht zu anderen md5s?

1160
James

Für einen Schulauftrag arbeiten wir also mit Hashes. Ich habe jedoch ein Problem festgestellt, bei dem meine Datei.txt Folgendes enthielt:

test hashes test hashes 

Ohne Anführungszeichen stimmt das Hash von HashCalc (für Windows) nicht überein und http://www.md5hashgenerator.com/ beide kommen mit cd7e8e88f33efb42e0a1148e92c5005b vor, während md5sum auf meinem kali linux mit f3c5fdf4320346eb9bd2a6b64235248e kommt

head -c -1 file.txt | md5sum 

Es funktioniert gut mit nur einer Zeile von Test-Hashes, aber mit der zweiten Zeile kann ich es nicht zusammenbringen.

0
"cd7e8e88f33efb42e0a1148e92c5005b" ist der md5-Hash für beide Zeilen, kombiniert mit einem Zeilenvorschubzeichen, das die erste Zeile von der zweiten trennt. Ramhound vor 7 Jahren 1
Sie haben uns nicht mitgeteilt, welchen MD5-Hash Sie tatsächlich erwarten. Ramhound vor 7 Jahren 0
Ich erwarte, dass der in 5005b endende in md5sum auftaucht, und ich möchte wissen, warum sie nicht zusammenpassen. Ist der Algorithmus nicht derselbe? James vor 7 Jahren 0
Wenn Sie mit dem 5005b rechnen, ist Ihr Befehl nicht korrekt. Sie erhalten derzeit nur eine einzige Zeile, während Sie für die Erzeugung von 5005b beide Zeilen benötigen. Ihr aktueller Befehl liest nur 1 Byte. Sie sollten die Option -n und nicht die Option -c verwenden. Geben Sie uns die Zeichenfolge an, die 35248e generiert hat Ramhound vor 7 Jahren 0
[Der Oberbefehl] (http://www.linfo.org/head.html) Ramhound vor 7 Jahren 0
tatsächlich liest dieser Befehl alle außer einem Byte. -c -1 soll die newLine nach der Datei abnehmen. Der Befehl funktioniert mit einer Zeile in der Datei, aber mehrere Zeilen stimmen nicht überein. echo -n "test hashes" | md5sum und mein vorheriger Code stimmen mit nur einer Zeile in der Datei überein. James vor 7 Jahren 0
nach einem kleinen Test denke ich, -c1 nimmt das erste Byte und -c -1 das letzte. Jemand schlug vor, die newLine zu entfernen. Ich bin mir nicht sicher, wie sie funktioniert, aber sie hat nur eine Zeile in der Textdatei. Dank Kamils ​​Antwort weiß ich jetzt, warum sie nicht mit den neuen Linien übereinstimmen. Das Problem besteht nun darin, dass \ n \ n für die neuen Zeilen in einer gesamten TXT-Datei ein \ r \ n angezeigt wird. James vor 7 Jahren 0
Ich wusste, dass es so etwas war. Ramhound vor 7 Jahren 0

1 Antwort auf die Frage

2
Kamil Maciorowski
$ echo -ne "test hashes\ntest hashes" | md5sum  f3c5fdf4320346eb9bd2a6b64235248e - $ echo -ne "test hashes\r\ntest hashes" | md5sum  cd7e8e88f33efb42e0a1148e92c5005b - 

Es geht um Unix ( \n) vs. DOS-Zeilenende ( \r\n).

Sie können Unix-Zeilenenden in DOS konvertieren mit unix2dos:

$ echo -ne "test hashes\ntest hashes" | unix2dos | md5sum cd7e8e88f33efb42e0a1148e92c5005b - 

Der umgekehrte Befehl lautet dos2unix.

Jetzt kommen wir irgendwo hin. Das erklärt, warum es nicht funktioniert. Wie würde ich also \ r in eine gesamte Datei einfügen, so dass der Hash für ein .txt-Datei-Fenster und Linux gleich ist? BEARBEITEN: Ich meine eine in Windows erstellte Datei und eine in Linux erstellte Datei James vor 7 Jahren 0
Sorry verwirrende Frage. besser ausgedrückt: Welchen Terminalbefehl kann ich verwenden, um den 5005b-Hash in Linux für eine Datei und nicht für ein Echo zu erhalten? James vor 7 Jahren 0
@ James Ich habe meine Antwort erweitert. Kamil Maciorowski vor 7 Jahren 0
Perfekt, dass Unix2dos genau das ist, was mir gefehlt hat James vor 7 Jahren 0