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