1) Каково его использование?
В сущности, хеширование представляет собой процесс, в одну сторону (необратимое), который принимает некоторые входные данные и выдает строку - как правило, в шестнадцатеричном - фиксированной длины, которая уникально идентифицирует *, что конкретные входные данные. Это очень полезно и имеет множество приложений, но в вашем случае оно используется для проверки целостности файлов. Веб-сайт загружает хэш файла для просмотра в мире, и когда файл загружается на ваш компьютер, вы проверяете, будет ли хэш, который вы вычисляете, локально, соответствует хешу, отображаемому на веб-сайте. Если они совпадают, файл остается нетронутым, но если этого не происходит, файл на вашем компьютере не идентичен файлу на сервере - скорее всего, потому что он был поврежден/изменен в пути.
2) Как проверить и проверить его на Windows и Linux?
По крайней мере, на системах * nix существует несколько способов сравнения хешей. Ничто не мешает вам вручную проверять каждый символ двух хэшей на равенство - это часто бывает быстро, когда вы просто хотите проверить один файл. Во всяком случае, большинство хэширующих программ имеют параметр -c
для этой цели, который будет выводить «ОК» в случае совпадения. Для того, чтобы вручную ввести хэш и файл и трубы как для SHA1SUM для сравнения, сделать это:
$ echo "672d844c60553f9b3db9844dc29ddf49bc426f45" /bin/echo | sha1sum -c -
/bin/echo: OK
Для вычисления хэша и сделать файл (echo.sha1), содержащее имя хэш и путем к файлу + файл:
# calculate hash and write it along with the file path + file name to a file
$ sha1sum /bin/echo > echo.sha1
# see the contents of the file
$ cat echo.sha1
672d844c60553f9b3db9844dc29ddf49bc426f45 /bin/echo
# do the comparison
$ sha1sum -c echo.sha1
/bin/echo: OK
Microsoft, по-видимому, предоставляет The File Checksum Integrity Verifier с той же целью. Я нахожусь в Linux и не тестировал его, но в описании написано:
«Контроллер целостности контрольной суммы файла (FCIV) - это служебная программа командной строки, которая вычисляет и проверяет криптографические хэш-значения файлов. FCIV может вычислять MD5 или криптографические хэш-значения SHA-1. Эти значения могут отображаться на экране или сохраняться в базе данных XML-файлов для последующего использования и проверки ».
Я не согласен с использованием Microsoft фразы «криптографический хеш» в этом контексте; возможно, программа устарела. Во всяком случае, для записи MD5 и SHA1 не являются криптографически безопасными алгоритмами хэширования. Тем не менее, они отлично подходят для быстрой проверки целостности файлов.
Могу ли я также сделать контрольную сумму SHA-1 любого файла?
Вы действительно можете. На самом деле, нет возможности проверить целостность файла без, вычисляя хэш на вашем компьютере - его часть процесса. Чтобы получить sha1 сумму файла на Linux/Unix (в данном случае «эхо» бинарные снова), вы можете просто сделать:
$ sha1sum /bin/echo
672d844c60553f9b3db9844dc29ddf49bc426f45 /bin/echo
Есть другая SHA хэша длина:
$ sha512sum /bin/echo
1f481804f114677efbfc1438b04e88af5be8507e098792b714939fcd346b7477fdb4ae0c53fd48e96d1031fc8d6e3d8c8d4c4c80e121f5c5a39d18c912b33a11 /bin/echo
MD5 используется для тех же целей в течение длительного времени, а иногда и до сих пор (но, опять же, не использовать MD5 или SHA1 для шифрования):
$ md5sum /bin/echo
482a44200637097351e30c80b1155c27 /bin/echo
Как вы можете видеть ниже, он работает для строк как Что ж. Опция -n
после echo
выделяет символ новой строки, который в противном случае был бы частью строки и приводил к неправильному хешу.
$ echo -n "some_string" | sha256sum
539a374ff43dce2e894fd4061aa545e6f7f5972d40ee9a1676901fb92125ffee
Если вы запускаете сервер и хотите сделать пароль логины, как правило, не хранятся фактические пароли, но, вместо этого, хранить хэш паролей. В этом случае добавьте salt пароль перед тем хэшированию и использовать рекомендованный в настоящее время алгоритма хэширования - bcrypt является хорошим выбором в 2016 году
Я мог бы пойти и по поводу контрольных сумм против криптографического хеширования против шифрования, радужных таблиц , хеш-коллизии и т. д., но это выходит за рамки вашего вопроса.
- "(...), который однозначно идентифицирует (...)" является перепроизводство заявление. Here's why. Ничто в этом мире не является совершенным - кроме one-time pads :)
Он используется для генерации сигнатуры файла, чтобы убедиться, что файл не поврежден. В linux см. Команду 'sha1sum'. – Pierre