it-swarm.com.de

MD5 ist 128 Bit, aber warum sind es 32 Zeichen?

Ich habe ein paar Dokumente über md5 gelesen und gesagt, dass es 128 Bit sind, aber warum sind es 32 Zeichen? Ich kann die Zeichen nicht berechnen.

  • 1 Byte ist 8 Bits
  • wenn 1 Zeichen 1 Byte ist
  • dann sind 128 bits 128/8 = 16 bytes oder?

BEARBEITEN:

SHA-1 erzeugt 160 Bit. Wie viele Zeichen gibt es also?

75
hash_jr90

32 Zeichen als hexadezimale Darstellung, das sind 2 Zeichen pro Byte.

93
ba__friend

Ich wollte einige der Antworten in einem Beitrag zusammenfassen.

Stellen Sie sich den MD5-Hash zunächst nicht als Zeichenfolge, sondern als Hex-Zahl vor. Daher ist jede Ziffer eine Hexadezimalziffer (0-15 oder 0-F) und repräsentiert vier Bits, nicht acht.

Wenn man dies weiter betrachtet, werden ein Byte oder acht Bits durch zwei hexadezimale Ziffern dargestellt, z. b '1111 1111 '= 0xFF = 255.

MD5-Hashes haben eine Länge von 128 Bit und werden im Allgemeinen durch 32 Hexadezimalstellen dargestellt.

SHA-1-Hashes haben eine Länge von 160 Bit und werden im Allgemeinen durch 40 Hexadezimalziffern dargestellt.

Für die SHA-2-Familie kann die Hash-Länge meines Erachtens eine vorgegebene Menge sein. So kann SHA-512 durch 128 Hexadezimalstellen dargestellt werden.

Auch dieser Beitrag basiert nur auf vorherigen Antworten.

27
RepentantFan

Ein hexadezimales "Zeichen" (Nibble) unterscheidet sich von einem "Zeichen"

Um klar zu sein, auf die Bits vs Byte vs Zeichen.

  • 1 Byte ist 8 Bits (für unsere Zwecke)
  • 8 Bits bieten 2**8 Mögliche Kombinationen: 256 Kombinationen

Wenn Sie sich ein Hex-Zeichen ansehen

  • 16 Kombinationen von [0-9] + [a-f]: Das gesamte Spektrum von 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
  • 16 ist kleiner als 256, also speichert ein Hex-Zeichen nicht ​​ein Byte.
  • 16 ist 2**4: Das bedeutet, dass ein Hex-Zeichen 4 Bits in einem Byte (ein halbes Byte) speichern kann.
  • Daher können zwei Hexadezimalzeichen 8-Bit-Kombinationen 2**8 Speichern.
  • Ein als Hex-Zeichen dargestelltes Byte ist [0-9a-f][0-9a-f] Und repräsentiert beide Hälften eines Bytes (wir bezeichnen ein halbes Byte als Nibble ).

Wenn Sie sich ein normales Einzelbytezeichen ansehen (wir werden hier Multibyte- und Breitbytezeichen vollständig überspringen)

  • Es können weit mehr als 16 Kombinationen gespeichert werden.
  • Die Fähigkeiten des Zeichens werden durch die Kodierung bestimmt. Beispielsweise speichert das ISO 8859-1, das ein gesamtes Byte speichert, all dies Zeug
  • Das ganze Zeug nimmt den gesamten 2**8 - Bereich ein.
  • Wenn ein Hex-Zeichen in einer md5() all das speichern könnte, würden Sie alle Kleinbuchstaben, alle Großbuchstaben, alle Satzzeichen und Dinge wie ¡°ÀÐàð, Leerzeichen wie (Zeilenumbrüche) sehen , und Tabulatoren) und Steuerzeichen (die Sie nicht einmal sehen können und von denen viele nicht verwendet werden).

Sie unterscheiden sich also deutlich voneinander und ich hoffe, dass dies die beste Aufschlüsselung der Unterschiede liefert.

23
Evan Carroll

MD5 liefert hexadezimale Ziffern (0-15/0-F), also jeweils vier Bits. 128/4 = 32 Zeichen.

SHA-1 liefert auch hexadezimale Ziffern (0-15/0-F), also 160/4 = 40 Zeichen.

(Da es sich um mathematische Operationen handelt, wird die Ausgabe der meisten Hashing-Funktionen üblicherweise als Hexadezimalzahl dargestellt.)

Sie haben wahrscheinlich an ASCII Textzeichen gedacht, das sind 8 Bit.

19
Wiseguy

Das sind 32 Hexadezimalzeichen - 1 Hexadezimalzeichen entspricht 4 Bits.

8
Brett Thomas

Dies sind hexadezimale Ziffern, keine Zeichen. Eine Ziffer = 4 Bits.

2
eaolson

Es sind eigentlich keine Zeichen, sondern hexadezimale Ziffern.

2
Jack Edmonds