ИНСТР-HASH-COMPAREMD5/SHA-1 deprecatedSHA-256 рекомендуетсяревизия 2026-05-07

MD5 vs SHA-1 vs SHA-256

Сравнение хеш-функций: MD5 (сломан), SHA-1 (сломан), SHA-256 (безопасен). Скорость, длина хеша, где использовать каждую.

⏱ работает в браузере · без регистрации
Инструмент · ИНСТР-HASH-COMPARE|real-time
calcal.ru / hash-md5-vs-sha1-vs-sha256
Загрузка...
128/160/256бит
Длина хеша
2004/2017
MD5/SHA-1 сломаны
32/40/64
Hex символов
0
Запросов к серверу

Сравнение хеш-функций

Хеш-функции — основа современной криптографии. От них зависит безопасность паролей, цифровых подписей, SSL-сертификатов, блокчейнов. MD5, SHA-1, SHA-256 — три самых известных алгоритма. Два из них уже сломаны и не должны использоваться для безопасности. Разберём что куда подходит.

ПараметрMD5SHA-1SHA-256
Год создания199219952001
Длина хеша128 бит160 бит256 бит
Hex символов324064
Скорость (CPU)500 MB/s400 MB/s250 MB/s
Коллизии найдены2004 — за минуты2017 — $110kне найдены
БезопасностьСЛОМАНСЛОМАНбезопасен
Применение 2024checksum, etaggit (legacy)SSL, JWT, Bitcoin

Пример хешей строки "hello"

MD5:    5d41402abc4b2a76b9719d911017c592
        (32 символа)

SHA-1:  aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
        (40 символов)

SHA-256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
        (64 символа)

История взломов

MD5 — взлом 2004

В августе 2004 китайские исследователи Wang, Yin, Yu опубликовали алгоритм поиска коллизий MD5 за 1 час на стандартном компьютере. К 2008 атака была оптимизирована — коллизии находятся за 1 секунду. Реальная атака: создание двух X.509 сертификатов с одинаковым MD5 — атакующий получает легитимный сертификат для своего фейкового сайта.

В 2012 червь Flame (атрибутирован к спецслужбам) использовал коллизию MD5 для подделки Microsoft Windows Update подписи — массовое заражение в Иране. После этого Microsoft удалил MD5 из всех систем безопасности.

SHA-1 — взлом 2017 (SHAttered)

Google + CWI Amsterdam опубликовали SHAttered (shattered.io) — первая практическая коллизия SHA-1. Создали два разных PDF с одинаковым SHA-1 хешем. Стоимость атаки: 6500 GPU-лет ≈ $110 000. Звучит дорого, но для государственных актёров — копейки.

В 2020 атака улучшена: SHA-1 коллизия за $45k. Сегодня (2024) — за несколько $10k. Все основные платформы отказались от SHA-1: Chrome (2017), Firefox (2017), git (постепенно), GitHub (для commits — поддерживает но рекомендует переход).

SHA-256 — будущее

Теоретическая атака на SHA-256 потребует ~2^128 операций. Это больше суммарной энергии всех звёзд Млечного Пути за миллиард лет. С квантовыми компьютерами (алгоритм Гровера) — 2^128 уменьшается до 2^64, что всё ещё безопасно (десятилетия). Если квантовые компьютеры станут практическими — рекомендуется переход на SHA-3 или Argon2.

Federal agencies should stop using SHA-1 for digital signatures, digital time stamping, and other applications that require collision resistance as soon as practical. Use SHA-256 (or any of the SHA-2 family) instead.National Institute of Standards and Technology (NIST), 2011

Где использовать что

MD5 — допустимо в 2024

  • HTTP Etag. Хеш ответа для кэширования. Безопасность не критична.
  • Cache key. Хеш объекта для ключа в Redis. Скорость важнее.
  • Deduplication. Проверка идентичности файлов в backup-системах.
  • Checksum при передаче. Проверка что файл не повреждён при копировании (НЕ при downloading с публичного сервера).
  • Хеширование cache-busting URL. /style.css?v=md5(file_contents).

SHA-1 — legacy, не для нового кода

  • Git commits. Исторически используется. Git поддерживает, но рекомендует переход.
  • HMAC-SHA-1 в OAuth 1.0a. Для совместимости со старыми API. Для нового OAuth — используйте OAuth 2.0 с HS256.
  • UUID v5. Если нужны namespace-based UUID (но лучше использовать v4 или v7).

SHA-256 — стандарт

  • SSL/TLS-сертификаты. Все современные CA выпускают только SHA-256.
  • JWT (HS256, RS256, ES256). Подпись токенов авторизации.
  • Bitcoin / blockchain. Двойной SHA-256 для proof-of-work.
  • File integrity критичных систем. Linux ISO, обновления ПО, security patches.
  • Цифровые подписи. Документы, сертификаты, контракты.
  • HMAC-SHA-256. API authentication, webhook verification (Stripe, GitHub).

Пароли — отдельная категория

Для хеширования паролей НЕ используйте ни MD5, ни SHA-1, ни SHA-256 напрямую. Все они слишком быстрые — современный GPU вычисляет миллиарды хешей в секунду.

  • Argon2id (Argon2) — современный стандарт, рекомендуется для новых проектов.
  • bcrypt — старый, но проверенный временем. Совместимость с большинством библиотек.
  • scrypt — компромисс между bcrypt и argon2.
  • PBKDF2 — стандарт NIST. Используется в WPA2, BitLocker. Минимум 100k итераций.

Генерация в коде

Node.js

import crypto from 'crypto';

const data = 'hello';

// MD5 — для checksum
const md5 = crypto.createHash('md5').update(data).digest('hex');
// 5d41402abc4b2a76b9719d911017c592

// SHA-1 — для git compatibility
const sha1 = crypto.createHash('sha1').update(data).digest('hex');
// aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d

// SHA-256 — для security (РЕКОМЕНДУЕМ)
const sha256 = crypto.createHash('sha256').update(data).digest('hex');
// 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

// HMAC-SHA-256 для подписи
const hmac = crypto.createHmac('sha256', 'secret').update(data).digest('hex');

Python

import hashlib
import hmac

data = b'hello'

# Простые хеши
md5 = hashlib.md5(data).hexdigest()
sha1 = hashlib.sha1(data).hexdigest()
sha256 = hashlib.sha256(data).hexdigest()

# HMAC
key = b'secret'
hmac_sha256 = hmac.new(key, data, hashlib.sha256).hexdigest()

Bash

# Хеш файла
md5sum file.txt        # 5d41402abc4b2a76b9719d911017c592
sha1sum file.txt       # aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
sha256sum file.txt     # 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

# Хеш строки
echo -n "hello" | md5sum
echo -n "hello" | sha256sum

# Проверка контрольной суммы
sha256sum -c file.txt.sha256
ИСТОЧНИКИ
  1. NIST SP 800-131A — Transitioning the Use of Cryptographic Algorithms. NIST. csrc.nist.gov/publications/detail/sp/800-131a/rev-2/final. 2019.
  2. SHAttered — first SHA-1 collision. Google + CWI Amsterdam. shattered.io. 2017.
  3. How to Break MD5 and Other Hash Functions. Wang, Yin, Yu. eprint.iacr.org/2004/199. 2005.
  4. FIPS 180-4 — Secure Hash Standard (SHS). NIST. csrc.nist.gov/publications/detail/fips/180/4/final. 2015.
ЧАСТЫЕ ВОПРОСЫ

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

НЕТ для криптографии. MD5 (1992, 128 бит) сломан с 2004 года: можно за минуты найти коллизию (два разных файла с одним хешем). Реальная атака: создать вредоносный файл с тем же MD5 что и легитимный — пользователь верит хешу и устанавливает malware. Используйте MD5 ТОЛЬКО для несекьюрных задач: file checksum (проверка повреждений при передаче), кэш-ключи, etag.
НЕТ для криптографии. SHA-1 (1995, 160 бит) теоретически сломан с 2005, практически — Google продемонстрировал коллизию SHAttered в 2017 (6500 GPU-лет, ~$110k стоимости). С 2020 stiffer attack: Шамирский — $45k. Browsers (Chrome 56+, Firefox 51+) НЕ доверяют SSL-сертификатам с SHA-1. Git исторически использовал SHA-1 для commits, теперь переходит на SHA-256.
ДА на десятилетия вперёд. 256 бит = 2^256 возможных хешей. Найти коллизию требует ~2^128 операций (по теореме о днях рождения) — это больше энергии Солнца за всё его существование. Используется в Bitcoin, JWT (HS256), SSL/TLS, file integrity для критичных систем. Если в задаче безопасности нужен хеш — SHA-256 (или SHA-3 для квантовой стойкости).
MD5 — самый быстрый. SHA-1 на 30-50% медленнее MD5. SHA-256 на 50-70% медленнее SHA-1. На современном CPU: MD5 ~500 MB/s, SHA-1 ~400 MB/s, SHA-256 ~250 MB/s. С аппаратным ускорением (Intel SHA Extensions) SHA-256 догоняет SHA-1. Для больших файлов разница заметна. Для коротких строк (пароли, токены) — никакой разницы, выбирайте по безопасности.
MD5 — 128 бит = 32 hex-символа. Пример: 5eb63bbbe01eeed093cb22bb8f5acdc3. SHA-1 — 160 бит = 40 hex-символов. Пример: 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed. SHA-256 — 256 бит = 64 hex-символа. Пример: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824. SHA-512 — 512 бит = 128 hex-символов.
Только для несекьюрных задач: (1) Etag — кэш HTTP. (2) Cache key — для коротких ключей. (3) Checksum при передаче файлов (где не критична безопасность — например, downloading mirror image). (4) Deduplication файлов (проверка дублей в backup системе). НЕ используйте для: паролей, цифровых подписей, SSL, JWT, целостности critical files (конфиги, обновления ПО).
Прямой SHA-256 — НЕ ПОДХОДИТ для паролей. Слишком быстрый, brute-force за минуты. Используйте: bcrypt (default), argon2 (современный, лучший), scrypt (память + время), PBKDF2 (стандарт NIST). Эти хеши специально МЕДЛЕННЫЕ (50-200 ms на хеш), включают salt. Современные: Argon2id для новых проектов, bcrypt — если нужна максимальная совместимость.
MD5 и SHA-1 НЕ удалены из библиотек, но помечены как «не использовать для новых проектов». Существующий код продолжает работать. Современные библиотеки требуют явное указание: <code>crypto.createHash("md5")</code> в Node.js — работает, но IDE подскажет «consider sha256». В FIPS-режиме (правительственные системы США) MD5 и SHA-1 запрещены физически.
Лиана Арифметова
АВТОРverifiedред. calcal.ru

Лиана Арифметова

Создатель и главный редактор

Миссия: демократизировать сложные расчёты. Превратить страх перед числами в ясность и контроль. Девиз: «Любая повторяющаяся задача заслуживает своего калькулятора».

Mathematical Engineering · МФТИ · редактирует каталог с 2012 года

Был ли этот калькулятор полезен?

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

Инструмент справочный — не заменяет эксперта

Только для информационных целей. Все расчёты, результаты и данные, предоставляемые инструментом, носят исключительно ознакомительный и справочный характер. Они не являются профессиональной консультацией — медицинской, юридической, финансовой, инженерной или иной.

Точность результатов. Калькулятор основан на общепринятых формулах и методиках, однако фактические результаты могут отличаться в зависимости от индивидуальных условий, исходных данных и применяемых стандартов. Мы не гарантируем полноту, точность или актуальность приведённых расчётов.

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

Ограничение ответственности. Авторы и разработчики сервиса не несут ответственности за прямой или косвенный ущерб, возникший из-за использования данных расчётов. Пользователь принимает на себя всю ответственность за интерпретацию результатов.