Как рассчитывается размер хэша SHA-256?

SHA-256 дает нам 256-битное хеш-значение для заданного ввода. Когда я попытался, я получил следующий хеш для случайной входной строки:

2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

Этот хеш состоит из 64 символов. Учитывая распространенные кодировки, его размер будет:

UTF-8 = 64 * 8 = 512 бит

UTF-16 = 64 * 16 = 1024 бит

Так почему же это называется 256-битным хешем? Я делаю неправильное преобразование?


person G.D    schedule 20.04.2017    source источник


Ответы (2)


Строка 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 представляет собой строку с шестнадцатеричным кодированием. Это байты, представленные в виде чисел с основанием 16, поэтому каждые 2 символа представляют один байт.

Итак, 2c - это первый байт, f2 - второй байт и так далее. Поскольку строка состоит из 64 символов, она представляет 32 байта.

И 32 байта = 256 бит

person Community    schedule 20.04.2017

Это представление base16 / hex, которое имеет только 4 (log2 16) бита данных на байт.

Таким образом, sha256 здесь 4 * 64. Ничего страшного.

person Tatsuyuki Ishi    schedule 20.04.2017