Главная / Словарь / Хеширование
Словарь ИБ · Криптография и защита данных

Хеширование: что это, хеш-функция и алгоритмы

Проверено экспертной редакцией SecRadar · по первоисточникам ФСТЭК / ФСБ / Банка России

Хеширование — это одностороннее преобразование данных в строку фиксированной длины с помощью алгоритма, который называется хеш-функцией. Материал разбирает, чем хеширование отличается от шифрования и кодирования, какие алгоритмы устарели (MD5, SHA-1), а какие остаются стандартом (SHA-2, SHA-3, российский ГОСТ Р 34.11-2012 «Стрибог»), почему для паролей нужны отдельные медленные функции — bcrypt, scrypt, Argon2, PBKDF2 — и где хеширование применяется на практике: от контроля целостности файлов до электронной подписи и индикаторов компрометации.

Экспертная редакция SecRadar · как мы проверяем факты → Обновлено 11 июля 2026 · ~9 мин чтения общепринятая терминология криптографии, без вендорной привязки

Кратко

Что это
Одностороннее преобразование данных произвольного объёма в строку фиксированной длины (хеш) с помощью хеш-функции.
Ключевое свойство
Необратимость — по хешу нельзя восстановить исходные данные, только сверить их между собой.
Устаревшие алгоритмы
MD5 и SHA-1 — для обоих продемонстрированы практические коллизии, для задач безопасности не использовать.
Текущий стандарт
SHA-256/SHA-512 (SHA-2) и SHA-3; в РФ для гостребований — ГОСТ Р 34.11-2012 «Стрибог».
Пароли
Нужны специализированные медленные функции с солью — bcrypt, scrypt, Argon2, PBKDF2, — обычный быстрый SHA не подходит.
Где применяется
Контроль целостности файлов, электронная подпись, блокчейн, дедупликация, индикаторы компрометации, HMAC.

Что такое хеширование и хеш-функция

Хеширование — это одностороннее преобразование данных произвольного объёма в строку фиксированной длины с помощью алгоритма, который называется хеш-функцией. Результат — хеш, или дайджест, — детерминирован, воспроизводим и практически необратим: по хешу нельзя восстановить исходные данные, можно только сверить, совпадают ли они с уже известным значением.

Криптографическая хеш-функция строится на нескольких свойствах, без которых она непригодна для задач безопасности:

  • Детерминированность. Один и тот же вход всегда даёт один и тот же хеш — иначе сверка данных по хешу теряет смысл.
  • Лавинный эффект. Минимальное изменение входных данных — даже один бит — приводит к полностью другому, непредсказуемо отличающемуся хешу.
  • Необратимость (односторонность). По значению хеша вычислительно невозможно восстановить исходные данные — в отличие от шифрования, обратный ход намеренно не предусмотрен.
  • Стойкость к коллизиям. Крайне сложно найти два разных набора данных, которые дают одинаковый хеш; для устаревших алгоритмов эта стойкость нарушена на практике.

Три термина часто путают, хотя они решают разные задачи. Шифрование обратимо: зашифрованные данные превращаются обратно в исходные при наличии правильного ключа. Кодирование, например Base64, вообще не про безопасность — это просто способ представить данные в другом формате, и оно тоже обратимо без всякого ключа. Хеширование обратного хода не имеет по конструкции: оно не хранит данные, а лишь формирует их проверяемый отпечаток.

факт определение и свойства хеш-функций — общепринятая терминология криптографии (NIST FIPS 180-4, FIPS 202)

Алгоритмы хеширования: MD5, SHA, ГОСТ Стрибог

Основные алгоритмы хеширования делятся на устаревшие и криптографически стойкие: MD5 и SHA-1 больше не считаются безопасными из-за продемонстрированных коллизий, современный стандарт — семейство SHA-2 и SHA-3, а для российской криптографии обязателен отечественный ГОСТ Р 34.11-2012 «Стрибог». Выбор конкретного алгоритма зависит от задачи и от того, какая регуляторика на неё распространяется.

↔ таблицу можно прокрутить вбок

АлгоритмДлина хешаСтатусГде уместен
MD5128 битВзломан: коллизии продемонстрированы в 2004 годуНе использовать для безопасности; допустим только для контроля случайных ошибок передачи
SHA-1160 битВзломан: практическая коллизия (SHAttered) показана Google в 2017 годуУстаревший, для новых систем не применяется
SHA-2 (SHA-256, SHA-512)256 / 512 битТекущий стандарт, практических коллизий не найденоTLS, электронная подпись, блокчейн, общего назначения
SHA-3 (Keccak)224–512 битСтандарт NIST FIPS 202 (2015), другая внутренняя конструкция (sponge)Альтернатива SHA-2 там, где нужна архитектурная независимость от него
ГОСТ Р 34.11-2012 «Стрибог»256 / 512 битДействующий российский стандарт, заменил ГОСТ Р 34.11-94Обязателен для гостребований ФСБ России: СКЗИ классов КС1–КА, ЭП по 63-ФЗ на ГОСТ-алгоритмах

Практический вывод: если система попадает под требования ФСБ России к криптографической защите — например, входит в контур СКЗИ определённого класса или формирует электронную подпись по 63-ФЗ на отечественных алгоритмах, — используется ГОСТ Р 34.11-2012, а не SHA-2 или SHA-3. Для остальных задач общего назначения — контроль целостности файлов, TLS-соединения, внутренние системы без такого требования — достаточно SHA-256 или SHA-3.

факт статус MD5/SHA-1/SHA-2/SHA-3 — стандарты и уведомления NIST (FIPS 180-4, FIPS 202, SP 800-131A) реестр ГОСТ Р 34.11-2012 «Стрибог» — действующий национальный стандарт РФ, применение регулируют требования ФСБ России к СКЗИ

Хеширование паролей: соль, bcrypt, Argon2

Хранить пароли в открытом виде нельзя, но и обычная быстрая хеш-функция вроде SHA-256 без соли не защищает: современное оборудование перебирает миллиарды таких хешей в секунду. Для паролей используют специализированные медленные функции — bcrypt, scrypt, Argon2, PBKDF2 — вместе со случайной солью для каждого пароля.

Быстрая хеш-функция общего назначения — это плюс для контроля целостности файла и минус для пароля: чем быстрее алгоритм считает один хеш, тем быстрее злоумышленник с современным GPU или специализированным оборудованием перебирает варианты и сверяет их с украденной базой. Простой пароль, захешированный обычным SHA-256, вскрывается за минуты — не из-за слабости SHA-256 как такового, а из-за того, что он не для этого спроектирован.

Отдельная связанная угроза — брутфорс, прямой перебор паролей на живом сервисе, а не по украденной базе хешей; медленное хеширование защищает именно от офлайн-перебора после утечки базы.

Соль (salt) обязательна

Уникальное случайное значение, которое добавляется к паролю перед хешированием и хранится вместе с хешем в открытом виде. Не замедляет перебор конкретного пароля, но лишает злоумышленника возможности один раз посчитать таблицу хешей (rainbow table) и применить её сразу ко всей утёкшей базе — для каждого пользователя расчёт нужно вести заново.

Перец (pepper) дополнительно

Ещё одно секретное значение, но, в отличие от соли, оно не хранится в базе данных рядом с хешем, а держится отдельно — в конфигурации приложения или защищённом хранилище секретов. Если база паролей утекает целиком, перец при правильном хранении к злоумышленнику не попадает.

bcrypt адаптивный

Функция на основе алгоритма Blowfish с настраиваемым «фактором стоимости»: вычислительную сложность можно повышать по мере роста мощности оборудования, не меняя саму схему хранения. Один из самых распространённых вариантов для хеширования паролей в веб-приложениях.

scrypt memory-hard

Требует значительного объёма оперативной памяти для вычисления, что затрудняет параллельный перебор на специализированном оборудовании (ASIC, FPGA) — в отличие от bcrypt, где основное ограничение только вычислительное, а не по памяти.

Argon2 рекомендуемый

Победитель Password Hashing Competition — открытого международного конкурса, который завершился в июле 2015 года. Настраивается по трём параметрам — время, память, параллелизм, — вариант Argon2id считается текущим рекомендуемым выбором для новых систем.

PBKDF2 итеративный

Более старая функция, одобренная NIST (SP 800-132): многократно повторяет базовую хеш-операцию, повышая стоимость перебора числом итераций. Проще в реализации, чем bcrypt или Argon2, но не memory-hard — уступает им в стойкости против специализированного оборудования.

Соль решает не ту же задачу, что медленная функция. Соль не даёт злоумышленнику считать одну таблицу хешей на все аккаунты сразу, а медленная функция замедляет сам перебор для каждого отдельного пароля. Нужны оба элемента одновременно: соль без медленной функции не спасает от прямого перебора конкретного пароля, а медленная функция без соли не защищает от предвычисленных таблиц.
факт назначение соли и перца, устройство bcrypt/scrypt/PBKDF2 — общепринятая практика ИБ (NIST SP 800-132, OWASP Password Storage Cheat Sheet) факт Argon2 — победитель Password Hashing Competition, июль 2015 года

Где применяется хеширование

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

  • Контроль целостности файлов и обновлений. Издатель публикует хеш файла рядом со ссылкой на скачивание; получатель считает хеш загруженного файла и сверяет со значением издателя — несовпадение означает, что файл повреждён при передаче или подменён.
  • Электронная подпись. Подписывается не сам документ целиком, а его хеш — это на порядки быстрее и не меняет юридическую силу подписи, поскольку любое изменение документа меняет и его хеш. Подробнее о видах подписи и требованиях — в разделе про электронную подпись и 63-ФЗ.
  • Блокчейн. Каждый блок содержит хеш предыдущего блока, формируя цепочку: изменить один блок задним числом невозможно без пересчёта хешей всех последующих блоков.
  • Дедупликация. Системы хранения считают хеш каждого файла или блока данных и хранят одинаковые по хешу объекты один раз, экономя место без побайтового сравнения.
  • Индикаторы компрометации. Хеши вредоносных файлов (обычно MD5, SHA-1 или SHA-256) — один из базовых типов индикаторов компрометации: антивирус или EDR сверяет хеш проверяемого файла со списком известных вредоносных хешей.
  • HMAC. Код аутентификации сообщения на основе хеш-функции и секретного ключа — подтверждает не только целостность данных, но и то, что сообщение сформировал обладатель ключа, а не посторонний.
факт перечисленные области применения — общепринятая практика криптографии и ИБ, без привязки к конкретному вендору

Частые вопросы

Что такое хеширование простыми словами?
Хеширование — это преобразование данных (текста, файла, пароля) в строку фиксированной длины, которая называется хешем или дайджестом, с помощью специального алгоритма — хеш-функции. Один и тот же файл всегда даёт один и тот же хеш, а восстановить исходные данные по хешу обратно вычислительно невозможно — в этом ключевое отличие от шифрования. Метка: факт — раздел «Что такое хеширование» выше.
Чем хеширование отличается от шифрования?
Шифрование обратимо: зашифрованные данные можно расшифровать обратно в исходный вид, если есть правильный ключ. Хеширование по определению необратимо — хеш-функция не хранит и не позволяет восстановить исходные данные, она только подтверждает, что данные не менялись или совпадают с ранее сохранённым значением. Кодирование, например Base64, вообще не связано с безопасностью — это способ представить данные в другом формате, и оно тоже обратимо без всякого ключа. Метка: факт — раздел «Что такое хеширование» выше.
Можно ли восстановить исходные данные из хеша?
Нет, это заложено в само определение криптографической хеш-функции — она односторонняя. На практике злоумышленники не «расшифровывают» хеш, а подбирают исходные данные перебором или сверяют хеш с заранее посчитанными таблицами (rainbow tables) — поэтому короткие и предсказуемые исходные данные, например простые пароли, вскрываются перебором, даже если сам алгоритм хеширования математически стойкий. Метка: факт — разделы «Что такое хеширование» и «Хеширование паролей» выше.
Почему нельзя хранить пароли через обычный SHA-256 без соли?
SHA-256 и другие алгоритмы общего назначения спроектированы быстрыми — это плюс для проверки целостности файлов и минус для паролей: современный GPU перебирает миллиарды таких хешей в секунду, вскрывая простые пароли за минуты. Соль — уникальное случайное значение, добавляемое к паролю перед хешированием, — не замедляет перебор конкретного пароля, но лишает злоумышленника возможности использовать заранее посчитанные таблицы хешей сразу для всей базы. Поэтому для паролей используют не быстрые SHA-функции, а намеренно медленные — bcrypt, scrypt, Argon2, PBKDF2. Метка: факт — раздел «Хеширование паролей» выше.
Какой алгоритм хеширования использовать в 2026 году?
Для общего назначения — контроль целостности, электронная подпись, дедупликация — подходит SHA-256 или SHA-512 из семейства SHA-2, либо SHA-3: оба варианта считаются криптографически стойкими. MD5 и SHA-1 для задач безопасности использовать не следует — для обоих продемонстрированы практические коллизии. Для российской криптографии, где применение регулирует ФСБ России, обязателен ГОСТ Р 34.11-2012 «Стрибог». Для хранения паролей ни один из этих алгоритмов общего назначения не подходит — нужна специализированная медленная функция вроде Argon2. Метка: факт — раздел «Алгоритмы хеширования» выше.
Что такое ГОСТ Стрибог и когда он обязателен?
ГОСТ Р 34.11-2012, известный по названию алгоритма «Стрибог», — российский стандарт хеш-функции с длиной хеша 256 или 512 бит, принятый взамен более раннего ГОСТ Р 34.11-94. Он обязателен там, где применение регулируют требования ФСБ России к криптографической защите — например, в сертифицированных СКЗИ классов КС1–КА и при формировании электронной подписи по 63-ФЗ на ГОСТ-алгоритмах; для задач без такого регуляторного требования используют международные алгоритмы SHA-2 или SHA-3. Метка: реестр — действующий стандарт ГОСТ Р 34.11-2012, применение регулируют требования ФСБ России к СКЗИ.

Словарь ИБ на SecRadar

Разбор терминов криптографии и защиты данных без вендорной привязки — что стоит за понятием, как оно связано со смежными темами и какие классы СЗИ закрывают конкретную задачу.

Открыть словарь ИБ
Telegram-канал SecRadar
Сводка рынка ИБ России — каждую неделю

Новые продукты и сертификаты ФСТЭК, ходы вендоров, дедлайны регуляторов — коротко и со ссылками на первоисточники.

Подписаться →