Криптографические хэши
Криптографические хэши - это функции, которые принимают произвольные входные данные и возвращают значение фиксированной длины. Конкретное значение зависит от используемого алгоритма хэширования, такого как SHA-1, SHA-256 или BLAKE2, но любой алгоритм хэширования всегда возвращает одно и то же значение для одних и тех же входных данных.
В качестве примера, входные данные, строка:
Привет, мирбудет представлена в SHA-1 как:
0x26014e5a98a861906afa0bf7256861add8482b0aОднако точно такой же ввод генерирует следующий вывод с использованием SHA-256:
0x2a2e76364df5ab8f0441d9c88bf7688f7f565f0f6b92a877cc94263e123021e3Обратите внимание, что второй хэш длиннее первого. Это связано с тем, что SHA-1 создает 160-битный хэш, в то время как SHA-256 создает 256-битный хэш. Добавленный 0x указывает, что следующий хэш представлен в виде шестнадцатеричного числа.
Хэши могут быть представлены в разных базах (base2, base16, base32 и т.д.).
Хэши важны
Криптографические хэши имеют несколько очень важных характеристик:
- детерминированные - одно и то же входное сообщение всегда возвращает один и тот же выходной хэш
- некоррелированные - небольшое изменение в сообщении должно генерировать совершенно другой
- уникальные - невозможно сгенерировать один и тот же хэш из двух разных сообщений в одну строку
- невозможно угадать или вычислить входное сообщение по его хэшу. Не, ну если быть совсем честным, то иногда все же возможно, если знаешь тип (длину строки) - существуют даже базы данных хэшей.
Идентификаторы содержимого не являются хэшами файлов
Хэш-функции широко используются для проверки целостности файлов. Поставщик загрузки может опубликовать выходные данные хэш-функции для файла, часто называемой контрольной суммой. Контрольная сумма позволяет пользователям убедиться, что файл не был изменен с момента его публикации. Эта проверка выполняется путем выполнения той же хэш-функции для загруженного файла, которая использовалась для генерации контрольной суммы. Если контрольная сумма, которую пользователь получает из загруженного файла, точно совпадает с контрольной суммой на веб-сайте, то пользователь знает, что файл не был изменен и ему можно доверять.
Давайте рассмотрим конкретный пример. Когда вы загружаете файл образа диска для Ubuntu Linux, вы можете увидеть следующую контрольную сумму SHA-256 на веб-сайте Ubuntu, указанную для целей проверки:
0xB45165ED3CD437B9FFAD02A2AAD22A4DDC69162470E2622982889CE5826F6E3D ubuntu-20.04.1-desktop-amd64.isoПосле загрузки образа Ubuntu вы можете проверить целостность файла, хешируя файл, чтобы убедиться, что контрольные суммы совпадают:
echo "b45165ed3cd437b9ffad02a2aad22a4ddc69162470e2622982889ce5826f6e3d *ubuntu-20.04.1-desktop-amd64.iso" | shasum -a 256 --check ubuntu-20.04.1-desktop-amd64.iso: OK
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Читайте также:
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.