Maximale Länge für MD5-Ein- / Ausgabe

164

Was ist die maximale Länge des Strings, der md5-Hash haben kann? Oder: Wenn es keine Begrenzung gibt und wenn ja, wie hoch ist die maximale Länge des md5-Ausgabewerts?

Arun David
quelle
2
Folgen Sie dem Wiki: en.wikipedia.org/wiki/MD5
Frank

Antworten:

240

MD5 verarbeitet eine Nachricht beliebiger Länge in eine Ausgabe fester Länge von 128 Bit, die typischerweise als Folge von 32 hexadezimalen Ziffern dargestellt wird.

Daniel Vassallo
quelle
95
Hinweis für sich selbst: MD5-Hash-Länge = 128 bits= 16 bytes=32 hex digits
Prüfsumme
2
[Eine normale Bearbeitung] 32 hexadezimale Ziffern und die Zeichenfolge enthält nur Wörter von 'az' und Ziffern von '0-9'
v1h5
1
Ich habe in früheren Kommentaren einen kleinen Fehler bemerkt. Der Text sollte wie angegeben sein :) "32 hexadezimale Ziffern und die Zeichenfolge enthält nur Buchstaben von 'az' und Ziffern von '0-9'"
Remis B
2
@Shafizadeh Wie in der Antwort angegeben, hat die Eingabe eine beliebige Länge. Dies bedeutet, dass der Parameter eine beliebige Länge haben kann.
kdojeteri
1
@Peping Eine kleine Korrektur: Die Eingabe kann so lang sein wie der verwendete Datentyp in der verwendeten Programmiersprache. Beispiel: Javas Zeichenfolgen verwenden intern ein Array. Daher kann eine Zeichenfolge nur (2 ^ 31) -1 Zeichen enthalten (oder weniger, abhängig von der Heap-Größe). Dies wäre auch Ihre maximale Eingabe für die MD5-Funktion in Java. Aber rein theoretisch könnte die MD5-Funktion tatsächlich eine Eingabe beliebiger Länge verarbeiten. ;)
RicoBrassers
38

Länge anhängen

Eine 64-Bit-Darstellung von b (die Länge der Nachricht vor dem Hinzufügen der Füllbits) wird an das Ergebnis des vorherigen Schritts angehängt. In dem unwahrscheinlichen Fall, dass b größer als 2 ^ 64 ist, werden nur die niederwertigen 64 Bits von b verwendet.

  • Der Hash ist immer 128 Bit. Wenn Sie es als hexadezimale Zeichenfolge codieren, können Sie 4 Bits pro Zeichen codieren, was 32 Zeichen ergibt.
  • MD5 ist keine Verschlüsselung. Sie können einen MD5-Hash im Allgemeinen nicht "entschlüsseln", um die ursprüngliche Zeichenfolge zu erhalten.

Sehen Sie hier mehr .

Mark Byers
quelle
Die Länge der Nachricht ist unbegrenzt . Was meinst du mit Nachricht ? Wird es eingegeben? Meine Frage istMD5("how many characters exactly?");
Shafizadeh
@Shafizadeh Ihre Eingabe kann in Ihrer aktuellen Programmiersprache so lang wie möglich sein. In Java wären dies (2 ^ 31) -1 Zeichen in einer Zeichenfolge. Und ja, die "Nachricht" ist die Eingabe.
RicoBrassers
@Shafizadeh ... oder aus einer Datei könnte die Eingabe so groß sein wie der verfügbare Speicher.
ToolmakerSteve
9

Sie können eine beliebige Länge haben, aber natürlich kann es zu einem Speicherproblem auf dem Computer kommen, wenn die String-Eingabe zu lang ist. Die Ausgabe besteht immer aus 32 Zeichen.

Vidar Vestnes
quelle
4
Wenn die Zeichenfolgeneingabe zu lang ist, würde sie im System überhaupt nicht vorhanden sein, es sei denn, sie befindet sich in einer Datei. In diesem Fall können Sie Blöcke an die Digest-Funktion übergeben, während sie gelesen werden. Mit anderen Worten, Sie benötigen sie nur haben blockzu einem Zeitpunkt verfügbaren Bytes des Eingangs.
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳
6

Der Algorithmus wurde entwickelt, um eine beliebige Eingabelänge zu unterstützen. Dh Sie können Hashes von großen Dateien wie ISO einer DVD berechnen ...

Wenn es eine Einschränkung für die Eingabe gibt, kann diese aus der Umgebung stammen, in der die Hash-Funktion verwendet wird. Angenommen, Sie möchten eine Datei berechnen und die Umgebung hat ein MAX_FILE-Limit.

Die Ausgabezeichenfolge ist jedoch immer dieselbe: 32 Hexadezimalzeichen (128 Bit)!

Kami
quelle
4

Ein 128-Bit-MD5-Hash wird als Folge von 32 hexadezimalen Ziffern dargestellt.

Hamid Nazari
quelle
4

Möglicherweise möchten Sie SHA-1 anstelle von MD5 verwenden , da MD5 als fehlerhaft gilt.

Weitere Informationen zu MD5-Schwachstellen finden Sie in diesem Wikipedia-Artikel .

Daniel Vassallo
quelle
5
das ist nicht mehr als ein Gerücht. MD5 ist gut genug für die meisten üblichen Webentwicklungsaufgaben
Ihr gesunder Menschenverstand
11
Sein Schöpfer sowie Bruce Schneier und Homeland Security sind sich einig, dass es kaputt ist ... Wie viele weitere Gerüchte verbreiten Sie, um Sie davon zu überzeugen, dass es tatsächlich seit einiger Zeit kaputt ist? Tatsache ist, dass es beliebig einfach ist, eine Eingabe zu finden, die einen bestimmten Hash generiert. Natürlich können Sie dieses Risiko mindern, indem Sie Ihre Inputs mit ausreichend großen Salzen salzen. Nebenbei bemerkt: SHA-1 gilt als genauso kaputt. Wenn Sie Personen ein Upgrade empfehlen, empfehlen Sie ihnen, ein Upgrade auf SHA-2 durchzuführen.
Kander
3
@kander oh ich brauche ein wenig. Ein Beispiel. Bringen Sie bei einem Hash eine Quellzeichenfolge mit? Kein Link zu einem großartigen Artikel, keine Meinung von jemandem, sondern nur eine Quellzeichenfolge?
Ihr gesunder Menschenverstand
2
Niemand hat wirklich erwähnt, was sie wirklich unter dem Begriff "kaputt" verstehen. Obwohl @YourCommonSense Sinn macht.
JSmyth
4
Sie sprechen über Sicherheitsanwendungen von MD5. Aber MD5 (oder jede andere Hashing-Technik) hat eine Menge anderer Verwendungszwecke. Zum einen möchte ich damit eine Datei anhand ihres Hashs umbenennen. Ich bin sicherlich nicht besorgt über die Kollisionsbeständigkeit von MD5. Alles, was Sie gepostet haben, ist immer noch wahr, nur meine 2 Cent.
Tfrascaroli
3

Der mir bekannten Eingabe von md5 sind keine Grenzen gesetzt. Bei einigen Implementierungen muss die gesamte Eingabe in den Speicher geladen werden, bevor sie an die md5-Funktion übergeben wird (dh die Implementierung wirkt auf einen Speicherblock, nicht auf einen Stream). Dies ist jedoch keine Einschränkung des Algorithmus selbst. Die Ausgabe beträgt immer 128 Bit. Beachten Sie, dass md5 kein Verschlüsselungsalgorithmus ist, sondern ein kryptografischer Hash. Dies bedeutet, dass Sie damit die Integrität eines Datenblocks überprüfen können, das Hashing jedoch nicht rückgängig machen können. Beachten Sie auch, dass md5 als fehlerhaft gilt, sodass Sie es nicht für sicherheitsrelevante Zwecke verwenden sollten (es ist immer noch in Ordnung, die Integrität heruntergeladener Dateien und dergleichen zu überprüfen).

tdammers
quelle