2012-03-11 15 views

Odpowiedz

16

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

+0

, która odpowiada na moje pytanie. Dziękuję Ci! – tuna

+0

@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

+0

@zneak Mam na myśli, dając hash reprezentacyjną formę na dowolnym komputerze. – crackerplace

4

Na przykład, próbki bajtów, sześciokątne i Base64 poniżej kodować ten sam bajtów:

  • bajtów: 243 48 133 140 73 157 28 136 11 29 189 101 194 101 116 64 172 227 220 78
  • sześciokątne : f330858c499d1c880b1dbd65c2657440ace3dc4e
  • base64: 8zCFjEmdHIgLHb1lwmV0QKzj3E4=.

Tylko to, że AWS wymaga, aby jego wartości były zakodowane w base64.

+0

Ok, ale czy są jakieś zalety używania base64 zamiast hex? Chodzi mi o to, dlaczego Amazon używa base64, a nie hex? – tuna

+1

base64 koduje te same wartości w mniejszej liczbie znaków ASCII.A ponieważ używają też sygnatur kluczy publicznych, które są często zakodowane za pomocą base64 w swoich żądaniach, mogli pomyśleć, że używanie kodowania dla wszystkich wartości ma sens. –

Powiązane problemy