Daniel Thoma: halber Hashwert = vollwertiger Hashwert?

Beitrag lesen

Hallo suit,

sag ich ja - ein 128-bit-md5-hash hat genau 16 bytes - die meisten leute speichern die dinger in datenbanken aber als char/varchar/text - das benötigt dann konsequenterweise bei 32 hexadezimalziffern 32 bytes

Hexadezimalzahlen heißen so, weil es 16 Ziffern gibt. Also kann man mit einer Ziffer 4 Bit codieren. 128/4 = 32 Ziffern und damit Bytes. Das Ergebnis ist also das gleiche, aber Deine Begründung stimmt nicht ;-)

Base64 hat 64 "Ziffern", also 6 Bit/Ziffer.
Damit benötigt man dann 128/6 = 21 + 1/3 Bytes, Da Base64 auf 3-Byte-Blöcken arbeitet also wohl 24

Um mit 16 durch zu kommen, darf man gar keine solche Codierung verwenden, sondern muss die Daten direkt ablegen.
Bei Datenbanken ist das allerdings alles Witzlos, da wird es auf die paar Byte nicht ankommen.

Grüße

Daniel