hashe te nie są ASCII powodem widać cyfr hex jest fakt, że oprogramowanie używane do ich generowania wykonuje binarne wyjście strawić i zamienia ją w ciąg znaków ASCII cyfry szesnastkowe.
Na przykład, skrót MD5 wypełni tablicę 16 bajtów. Możesz również reprezentować go jako ciąg 32 znaków, ale najbardziej podstawową formą podtekstu jest nadal tablica bajtów.
Po zmianie tablicy bajtów na łańcuch szesnastkowy potrzebujesz 8 bitów (jeden pełny znak) do reprezentowania co 4 bitów danych. Chociaż nie jest tak często nazywane w ten sposób, można powiedzieć, że używa to kodowania "base16", ponieważ przechwytujesz 4 bity naraz i mapujesz je do 16-znakowego alfabetu.
Z drugiej strony, Base64 pobiera 6 bitów na raz i odwzorowuje je na 64-znakowy alfabet. Oznacza to, że potrzebujesz 8 bitów (ponownie, 1 pełny znak) do reprezentowania co 6 bitów danych, które mają połowę zmarnowanych bitów bazy16. Łańcuch zakodowany w base16 będzie zawsze dwa razy większy od oryginału; łańcuch zakodowany na podstawie base64 będzie miał tylko cztery trzecie wielkości. Do mieszania sha256, base16 ma 64 bajtów, a nie około 43 base64
, która odpowiada na moje pytanie. Dziękuję Ci! – tuna
@zneak Jest kosmicznym powodem, dla którego warto używać kodowania Base64 na haszymowaniu. Nie musimy tego wysyłać, jeśli chcemy wysłać ten skrót, musimy go reprezentować jako tekst, a Base64 robi to poprzez ograniczenie danych binarnych do zestawu 64 najczęściej nakładających się znaków z większości wspólnych kodowań? – crackerplace
@zneak Mam na myśli, dając hash reprezentacyjną formę na dowolnym komputerze. – crackerplace