Łańcuch wejściowy może być ciągiem znaków Unicode. Czy ciąg wyjściowy po obliczeniu SHA1 zawsze zwróci znaki ASCII?Czy SHA1 ciągu znaków zawsze zwraca znaki ASCII?
Odpowiedz
sha1 zwraca ciąg binarny. Niektóre funkcje sha1 mogą, dla wygody, również kodować ten łańcuch binarny na szesnastkowy lub base64 - jeśli tak, wynikiem będą znaki ASCII. Ale sha1 nie zwraca ASCII.
SHA1 zwraca 20 bajtów. SHA1 nie dotyczy kodowania, tekst ASCII, itp
Jeden wspólny sposób reprezentacji danych binarnych jest poprzez zakodowanie go w systemie szesnastkowym - w tym przypadku, wyjście jest zawsze [af] [0-9]
To zależy, ale ściśle mówiąc, nie. Wyjście sumy kontrolnej SHA-1 ma 160 bitów lub 20 bajtów, ale nie gwarantuje się, że bajty znajdują się w zakresie ASCII.
Jednak niektóre funkcje mieszające wyprowadzają równoważnik heksadecymalny (tj. 40 znaków) z 20 bajtów, więc jeśli pierwsze trzy bajty rzeczywistego haszu to 0x7e, 0x03 i 0xb2, wynik będzie zaczynać się od "7e03b2", w takim przypadku wyjście jest ASCII.
Aby wyjaśnić, SHA1 zwraca (dużą) liczbę. Niektóre z nich reprezentują tę liczbę jako ciąg znaków szesnastkowych. Jednak jeśli odwołasz się do biblioteki, która ma funkcję SHA1, niekoniecznie spodziewaj się, że zwróci ci ciąg znaków ASCII. Zawsze RTFM. –