Всегда ли SHA1 строки возвращает символы ASCII? - PullRequest
8 голосов
/ 30 июня 2011

Входная строка может быть строкой Unicode. Выходная строка после вычисления SHA1 всегда будет возвращать символы ASCII?

Ответы [ 3 ]

7 голосов
/ 30 июня 2011

Зависит, но, строго говоря, нет. Выход хэша SHA-1 составляет 160 бит или 20 байтов, но байты не обязательно находятся в диапазоне ASCII.

Однако некоторые хеш-функции выводят шестнадцатеричный эквивалент (т.е. 40 символов) из 20 байтов, поэтому, если первые три байта фактического хеша равны 0x7e, 0x03 и 0xb2, вывод будет начинаться с "7e03b2" в этом случае вывод равен ASCII.

3 голосов
/ 30 июня 2011

sha1 возвращает двоичную строку. Некоторые функции sha1 могут, для удобства, также кодировать эту двоичную строку в шестнадцатеричное или base64 - если это так, результатом будут символы ASCII. Но сам sha1 не возвращает ASCII.

2 голосов
/ 30 июня 2011

SHA1 возвращает 20 байтов. SHA1 не работает с кодировками, текстом, ASCII и т. Д.

Одним из распространенных способов представления двоичных данных является их кодирование в шестнадцатеричном формате - в этом случае вывод всегда равен [a-f] [0-9]

...