Перейти к содержимому
useToolz онлайн-инструменты

Хеширование данных: MD5, SHA-256 и другие алгоритмы

11.01.2026 1 мин. чтения

Что такое хеширование

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

Хорошая криптографическая хеш-функция обладает тремя свойствами:

  • Детерминированность — одни и те же входные данные всегда дают одинаковый хеш.
  • Лавинный эффект — малейшее изменение входных данных полностью меняет хеш.
  • Устойчивость к коллизиям — практически невозможно найти два разных входа с одинаковым хешем.

Популярные алгоритмы хеширования

MD5 (Message Digest 5)

Создан в 1991 году Рональдом Ривестом. Генерирует 128-битный (32 символа в hex) хеш. MD5 работает очень быстро, но в 2004 году были обнаружены практические коллизии — возможность создать два разных файла с одинаковым хешем. Сегодня MD5 считается криптографически небезопасным и не должен использоваться для защиты данных. Однако он по-прежнему подходит для проверки целостности файлов (контрольные суммы) и других некриптографических задач.

SHA-1 (Secure Hash Algorithm 1)

Разработан NSA в 1995 году. Генерирует 160-битный (40 символов) хеш. В 2017 году команда Google продемонстрировала практическую коллизию SHA-1 (проект SHAttered). С тех пор SHA-1 считается устаревшим. Браузеры перестали принимать SSL-сертификаты с SHA-1, Git постепенно переходит на SHA-256.

SHA-256

Часть семейства SHA-2, разработанного NSA. Генерирует 256-битный (64 символа) хеш. На сегодняшний день SHA-256 считается надёжным и используется повсеместно: SSL/TLS сертификаты, блокчейн Bitcoin, цифровые подписи, хранение паролей. Это рекомендуемый алгоритм для большинства задач.

SHA-512

Генерирует 512-битный (128 символов) хеш. Более безопасен, чем SHA-256, но медленнее на 32-битных системах. На 64-битных системах SHA-512 может работать даже быстрее SHA-256 благодаря особенностям архитектуры. Используется там, где нужен максимальный уровень безопасности.

bcrypt и Argon2 (для паролей)

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

Хеширование и шифрование: в чём разница

Эти понятия часто путают, но они принципиально различны:

  • Хеширование — необратимый процесс. Из хеша невозможно получить исходные данные. Используется для проверки целостности и хранения паролей.
  • Шифрование — обратимый процесс. Данные можно зашифровать и расшифровать при наличии ключа. Используется для защиты конфиденциальных данных при передаче и хранении.

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

Практическое применение хеширования

  • Хранение паролей. Сервисы хранят не пароль, а его хеш. При авторизации хешируют введённый пароль и сравнивают с сохранённым хешем.
  • Проверка целостности файлов. При скачивании программ вы можете сравнить хеш-сумму загруженного файла с указанной на сайте, чтобы убедиться, что файл не повреждён и не подменён.
  • Цифровые подписи. Подписывается не весь документ, а его хеш — это быстрее и безопаснее.
  • Дедупликация данных. Облачные хранилища вычисляют хеши файлов и не хранят дубликаты.
  • Блокчейн. Bitcoin и другие криптовалюты используют SHA-256 для создания цепочки блоков и майнинга.

Сгенерировать хеш для любых данных вы можете с помощью нашего генератора хешей. Инструмент поддерживает MD5, SHA-1, SHA-256, SHA-512 и другие алгоритмы.

Соль и перец: защита хешей паролей

Даже если сервис хранит хеши вместо паролей, злоумышленник может использовать заранее вычисленные таблицы (rainbow tables) для их расшифровки. Для защиты применяются:

  • Соль (salt) — случайная строка, уникальная для каждого пользователя, добавляемая к паролю перед хешированием. Делает rainbow tables бесполезными.
  • Перец (pepper) — секретная строка, общая для всего приложения, хранящаяся отдельно от базы данных. Добавляет дополнительный уровень защиты.

Часто задаваемые вопросы

Какой алгоритм хеширования выбрать?

Для паролей — bcrypt или Argon2. Для проверки целостности файлов — SHA-256. Для некритичных задач (кеширование, контрольные суммы) — MD5 допустим. SHA-1 не рекомендуется нигде из-за известных уязвимостей. Подробнее о генерации паролей читайте в статье о генераторе паролей.

Можно ли расшифровать хеш?

Нет, хеш-функция необратима по определению. Однако можно перебирать варианты (brute force) или использовать словари и rainbow tables для поиска исходных данных. Именно поэтому важны длинные пароли, соль и медленные алгоритмы хеширования.

Что такое коллизия хеш-функции?

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

Чем хеширование отличается от Base64?

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

Увеличенное изображение