На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Криптографические хэши



Криптографические хэши - это функции, которые принимают произвольные входные данные и возвращают значение фиксированной длины. Конкретное значение зависит от используемого алгоритма хэширования, такого как SHA-1, SHA-256 или BLAKE2, но любой алгоритм хэширования всегда возвращает одно и то же значение для одних и тех же входных данных.



В качестве примера, входные данные, строка:

Привет, мир
будет представлена в SHA-1 как:

0x26014e5a98a861906afa0bf7256861add8482b0a
Однако точно такой же ввод генерирует следующий вывод с использованием SHA-256:

0x2a2e76364df5ab8f0441d9c88bf7688f7f565f0f6b92a877cc94263e123021e3
Обратите внимание, что второй хэш длиннее первого. Это связано с тем, что SHA-1 создает 160-битный хэш, в то время как SHA-256 создает 256-битный хэш. Добавленный 0x указывает, что следующий хэш представлен в виде шестнадцатеричного числа.

Хэши могут быть представлены в разных базах (base2, base16, base32 и т.д.).

Хэши важны

Криптографические хэши имеют несколько очень важных характеристик:

  • детерминированные - одно и то же входное сообщение всегда возвращает один и тот же выходной хэш
  • некоррелированные - небольшое изменение в сообщении должно генерировать совершенно другой
  • уникальные - невозможно сгенерировать один и тот же хэш из двух разных сообщений в одну строку
  • невозможно угадать или вычислить входное сообщение по его хэшу. Не, ну если быть совсем честным, то иногда все же возможно, если знаешь тип (длину строки) - существуют даже базы данных хэшей.
Эти функции также означают, что мы можем использовать криптографический хэш для идентификации любого фрагмента данных: хэш уникален для данных, из которых мы его вычислили, и он не слишком длинный, поэтому его отправка по сети не занимает много ресурсов. Хэш имеет фиксированную длину, поэтому, например, хэш SHA-256 одногигабайтного видеофайла по-прежнему составляет всего 32 байта.

Идентификаторы содержимого не являются хэшами файлов

Хэш-функции широко используются для проверки целостности файлов. Поставщик загрузки может опубликовать выходные данные хэш-функции для файла, часто называемой контрольной суммой. Контрольная сумма позволяет пользователям убедиться, что файл не был изменен с момента его публикации. Эта проверка выполняется путем выполнения той же хэш-функции для загруженного файла, которая использовалась для генерации контрольной суммы. Если контрольная сумма, которую пользователь получает из загруженного файла, точно совпадает с контрольной суммой на веб-сайте, то пользователь знает, что файл не был изменен и ему можно доверять.

Давайте рассмотрим конкретный пример. Когда вы загружаете файл образа диска для 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегизаметки, хэширование, криптография

Читайте также:




Задача по кредиту
SharpDevelop и хеширование SHA-224 с помощью C#


© upread.ru 2013-2022
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.