Мой ответ отличается от предыдущих в моей теории только ТОЧНЫМ происхождением путаницы ОП, а также с детскими шагами, которые я приведу для выяснения.
A символ занимает различное количество байтов в зависимости от используемой кодировки ( см. Здесь ). В наши дни существует несколько контекстов, когда мы используем 2 байта на символ, например, при программировании на Java (, вот почему ). Таким образом, 40 символов Java будут равны 80 байтам = 640 битам, вычисление OP, и 10 символов Java действительно будут инкапсулировать нужное количество информации для хэша SHA-1.
В отличие от тысяч возможных символов Java, однако, есть только 16 различных шестнадцатеричных символов , а именно 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E и F. Но это не то же самое, что символы Java, и занимают гораздо меньше места, чем кодировки символов Java от 0 до 9 и от A до F. Это символы, обозначающие все возможные значения, представленные всего 4 бита:
0 0000 4 0100 8 1000 C 1100
1 0001 5 0101 9 1001 D 1101
2 0010 6 0110 A 1010 E 1110
3 0011 7 0111 B 1011 F 1111
Таким образом, каждый шестнадцатеричный символ составляет только половину байта, а 40 шестнадцатеричных символов дают нам 20 байтов = 160 битов - длину хеша SHA-1.