pytanie dotyczące rozmiaru pamięci

0

Witam, w definicji na wiki (http://pl.wikipedia.org/wiki/Md5) napisane jest, że z tego co chcemy zaszyfrować algorytm zwraca 128 bitowy skrót. Patrząc na to ludzkim okiem widać, że każdy zwrócony szyfr ma 32 znaki. Oznacza to, że każdy znak zajmuje w pamięci 4 bity (128 / 32 = 4). Ale jak to możliwe? Przykładowo jeżeli w zwróconym szyfrze-stringu jest literka (char) 'f' to przecież w ASCII znak 'f' odpowiada liczbie (dziesiętnie) 102. A tej liczby nie da się zapisać na 4 bitach. Bo na 4 bitach maksymalnie zapiszemy liczbę (dziesiętnie) 16 - daleko do 102.

0

Ten napis to jest tylko pisemna reprezentacja ciągu bajtów. Liczbę 1C możemy zapisać w jednym bajcie, pomimo tego, że to dwa znaki.

0

To są paczki bitów, każdy bajt można zapisać jako 2 cyfrową liczbę szesnastkową, więc dochodzimy do zawiłego działania jakim jest:

32 \div 2 \cdot 8 = 128

TADAM!!!

BTW:
MD5 nie jest algorytmem szyfrującym, gdyż z definicji algorytm szyfrujący działa w 2 strony (tzn. że to co zaszyfrowano można odszyfrować), natomiast MD5 jest funkcją skrótu działającą w jedną stronę, tzn. po zahashowaniu nie ma możliwości otrzymania oryginalnej wartości.

0

A rozumiem, czyli to nie zwykły string, tylko zlepek liczb w hexie. No to zgadza się. Dzięki za odpowiedzi :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0