Ich habe einige Dokumente über md5 gelesen, es heißt, dass es 128 Bit sind, aber warum sind es 32 Zeichen? Ich kann die Zeichen nicht berechnen.
- 1 Byte ist 8 Bit
- wenn 1 Zeichen 1 Byte ist
- dann sind 128 Bit 128/8 = 16 Bytes, oder?
BEARBEITEN:
SHA-1 erzeugt 160 Bit. Wie viele Zeichen gibt es also?
hash
cryptography
md5
cryptographic-hash-function
hash_jr90
quelle
quelle
((1 << (n*4))-1).bit_length()
wobei n die Länge desAntworten:
32 Zeichen als hexadezimale Darstellung, das sind 2 Zeichen pro Byte.
quelle
Ich wollte einige der Antworten in einem Beitrag zusammenfassen.
Stellen Sie sich den MD5-Hash zunächst nicht als Zeichenfolge vor, sondern als Hex-Zahl. Daher ist jede Ziffer eine hexadezimale Ziffer (0-15 oder 0-F) und repräsentiert vier Bits, nicht acht.
Wenn man das weiter nimmt, werden ein Byte oder acht Bits durch zwei hexadezimale Ziffern dargestellt, z. B. b '
1111 1111
' =0xFF
=255
.MD5-Hashes sind 128 Bit lang und werden im Allgemeinen durch 32 hexadezimale Ziffern dargestellt.
SHA-1-Hashes sind 160 Bit lang und werden im Allgemeinen durch 40 hexadezimale Ziffern dargestellt.
Für die SHA-2-Familie kann die Hash-Länge eine vorgegebene Menge sein. So kann SHA-512 durch 128 hexadezimale Ziffern dargestellt werden.
Auch dieser Beitrag basiert nur auf vorherigen Antworten.
quelle
Ein hexadezimales "Zeichen" (Knabbern) unterscheidet sich von einem "Zeichen"
Um die Bits gegen Byte und Zeichen klar zu machen.
2**8
mögliche Kombinationen: 256 KombinationenWenn Sie sich ein Hex-Zeichen ansehen ,
[0-9] + [a-f]
: der gesamten Palette von0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
2**4
: Das bedeutet, dass ein Hex-Zeichen 4 Bits in einem Byte (ein halbes Byte) speichern kann.2**8
Kombinationen speichern .[0-9a-f][0-9a-f]
dargestelltes Byte ist und das repräsentiert beide Hälften eines Bytes (wir nennen ein halbes Byte ein Halbbyte ).Wenn Sie sich ein reguläres Einzelbyte-Zeichen ansehen (wir werden hier ganz auf Mehrbyte- und Breitzeichen verzichten).
2**8
Reichweite ein.md5()
all das speichern könnte, würden Sie alle Kleinbuchstaben, alle Großbuchstaben, alle Satzzeichen und Dinge wie¡°ÀÐàð
Leerzeichen (Zeilenumbrüche und Tabulatoren) und Steuerzeichen (die Sie können) sehen. Ich sehe nicht einmal und viele davon werden nicht verwendet.Sie sind also eindeutig unterschiedlich und ich hoffe, dass dies die beste Aufschlüsselung der Unterschiede bietet.
quelle
MD5 liefert hexadezimale Ziffern (0-15 / 0-F), also sind es 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 Hex-Ziffern dargestellt.)
Sie haben wahrscheinlich an ASCII-Textzeichen gedacht, die 8 Bit umfassen.
quelle
Das sind 32 Hex-Zeichen - 1 Hex-Zeichen ist 4 Bit.
quelle
Dies sind hexadezimale Ziffern, keine Zeichen. Eine Ziffer = 4 Bits.
quelle
Sie sind eigentlich keine Zeichen, sondern hexadezimale Ziffern.
quelle
Eine hexadezimale Ziffer = 1 Halbbyte (vier Bits)
Zwei hexadezimale Ziffern = 1 Byte (acht Bit)
MD5 = 32 hexadezimale Ziffern
32 hexadezimale Ziffern = 16 Bytes (32/2)
16 Bytes = 128 Bits (16 * 8)
Gleiches gilt für SHA-1, außer dass es 40 hexadezimale Ziffern lang ist.
Ich hoffe das hilft.
quelle