SHA1 - алгоритм хеширования. Хеширование является односторонним, что означает, что вы не можете восстановить входные данные с выхода для любой нетривиальной хэш-функции. Простым примером односторонней хэш-функции будет сложение всех цифр числа. 1234
будет хешировать до 1 + 2 + 3 + 4 = 10
, но так же будет 4321
, 1900
, 5050
и многие другие числа. Учитывая только значение хеша 10
, вы не можете сказать, был ли ввод 1234
или 5050
, потому что информация была потеряна.
Вот графический пример:
![enter image description here](https://i.stack.imgur.com/VNBCf.png)
Как видите, и John Smith
, и Sandra Dee
сопоставлены с 02
. Это означает, что вы не можете восстановить , имя которого было хешировано, только 02
.
Хеширование полезно, потому что оно сопоставляет любой объем данных с выходом фиксированного размера, и, в отличие от приведенных выше примеров, чрезвычайно трудно найти два ввода, которые хэшируют тот же вывод. Для потребовалось более 6 500 процессорных лет, чтобы найти только одну пару входов для SHA-1 с одинаковым хешем.
Следовательно, если hash(A) == hash(B)
, то вы можете быть уверены, что A == B
. Если вы копируете огромный файл, и хэши как оригинала, так и копии совпадают, то вы можете быть уверены, что файл не поврежден.