Что такое SHA-1 из 255? - PullRequest
       42

Что такое SHA-1 из 255?

1 голос
/ 11 ноября 2011

Предположим, у вас есть алгоритм sha-1, который принимает текст в качестве ввода вместо байтового массива. (Например, есть несколько таких библиотек Javascript).

Когда вы хотите применить sha-1 к тексту (скажем, текст является паролем), вы сначала делаете кодировку utf-8, потому что текст может содержать многобайтовые символы. Другими словами, соответствующее целочисленное значение символа в тексте может быть больше, чем может содержать 8-битный байт. Поскольку алгоритм sha-1 работает на 8-битных единицах, он помогает сначала кодировать текст в utf-8.

Мой вопрос такой: Если у вас есть нетекстовые двоичные данные, где значение каждого байта находится в диапазоне от 0 до 255, ожидается ли, что вы по-прежнему будете выполнять кодировку utf-8 для двоичных данных, прежде чем передавать их в алгоритм sha-1? Я знаю, что когда значения находятся в диапазоне от 0 до 127, utf-8 вообще не изменяет данные.

Однако, если значения находятся между 128 и 255, UTF-8 изменяет такие данные.

Итак, вот мой вопрос: что такое SHA-1 байта, содержащего значение 255 (все 1)?

With UTF-8 encoding:    730cf30d408ecf51aad876f5c491f837f7ddea4c

Without UTF-8 encoding: 85e53271e14006f0265921d02d4d736cdc580b0b

Какой из них правильный?

1 Ответ

6 голосов
/ 11 ноября 2011

Нет, не кодируйте UTF-8 двоичных данных, это не имеет смысла.Если вам нужен хэш части двоичных данных, вам следует использовать именно SHA-1 , а именно , а не случайное преобразование этих данных.

Вы не должны также кодировать строки UTF-8.если вы не хотите, чтобы SHA-1 UTF-8 представлял эту строку .

...