Генератор хэшей
Поддержка MD5, SHA-1, SHA-256, SHA-384, SHA-512 алгоритмов хэширования
Что такое хэш?
Хэш — это алгоритм, преобразующий данные произвольной длины в дайджест фиксированной длины. Одинаковый ввод всегда даёт одинаковый вывод, а малейшее изменение ввода приводит к совершенно другому результату, причём восстановить исходные данные из хэша невозможно. Распространённые алгоритмы хэширования включают MD5, SHA-1, SHA-256, SHA-384, SHA-512 и широко используются для проверки целостности данных, хранения паролей, цифровых подписей и других задач. Хэш-функции нужно понимать по цели: проверка целостности, быстрая идентификация или безопасность. MD5 и SHA-1 еще встречаются в старых checksums, но слабы для современных решений доверия; обычно выбирают SHA-256 или более сильные алгоритмы. Хэш не является шифрованием: его нельзя расшифровать, но слабые и предсказуемые входы можно угадать словарями или precomputed attacks.
Как использовать
Как использовать
- Выберите режим ввода: текстовый ввод или загрузка файла
- Введите текст или перетащите файл
- Отметьте хеш-алгоритмы, которые хотите использовать (можно выбрать несколько)
- Нажмите «Сгенерировать хеш», чтобы выполнить вычисление
- Нажмите «Копировать», чтобы скопировать отдельный хеш, или «Копировать все» для всех результатов
Примечания о хешировании
- Хеш-значения — это детерминированные отпечатки; изменение даже одного байта во входных данных даёт совершенно другой результат.
- Используйте SHA-256 или более стойкие алгоритмы для проверки целостности, когда важна безопасность, и избегайте MD5/SHA-1 в новых сценариях безопасности.
Применение
Технический принцип
Криптографическая хэш-функция отображает вход произвольной длины в дайджест фиксированной длины с тремя свойствами безопасности: устойчивость к прообразу (трудно обратить), устойчивость ко второму прообразу (трудно найти другой вход с тем же дайджестом) и устойчивость к коллизиям (трудно найти любые два входа с одним дайджестом). MD5 (Rivest 1991, RFC 1321), SHA-1 (NIST FIPS 180-1, 1995) и семейство SHA-2 (FIPS 180-4, 2012) — все построены по схеме Меркля-Дамгарда: вход дополняется до кратного размеру блока, затем итеративно проходит через одностороннюю функцию сжатия. Размер блока — 512 бит для MD5, SHA-1, SHA-256 и 1024 бита для SHA-512. Размеры дайджестов: 128 / 160 / 256 / 384 / 512 бит соответственно. MD5 (Rivest 1991) — 128-битный хэш, 64 раунда четвертного раунда с четырьмя 32-битными цепочечными словами (A, B, C, D), константы получены из синусной функции (без криптографического смысла, только для нарушения симметрии). Атаки на коллизии: Wang et al. 2004 сократили поиск коллизий MD5 до 2⁴⁰ хэш-вычислений (вычисленные вручную дифференциальные пути); Stevens 2009 написал инструмент коллизий с выбранным префиксом; вредоносное ПО Flame 2012 использовало новую атаку с выбранным префиксом для подделки сертификата подписи кода Microsoft, что стало первым публично известным эксплуатом коллизии MD5 в реальных условиях. Сегодня коллизия MD5 стоит менее доллара на CPU и миллисекунды на GPU. Для любых новых протоколов используйте SHA-256. SHA-1 (FIPS 180-1, признан устаревшим NIST в 2011 после FIPS 180-4) — 160-битный хэш с 80 раундами и пятью 32-битными цепочечными словами. Атака SHAttered (Stevens et al., февраль 2017) произвела первую практическую коллизию SHA-1 стоимостью ~6500 CPU-лет и 110 GPU-лет. К 2020 году коллизии с выбранным префиксом стали реальностью за ~45 000 долларов GPU-времени, а к 2025 году стоимость коллизии на обычном оборудовании значительно ниже 10 000 долларов. Git перешёл с SHA-1 на SHA-256 в 2020 году; HTTPS-сертификаты не могли использовать SHA-1 с 2017 года. Вывод коллизии SHAttered с выбранным префиксом ('SHAttered.pdf' и 'SHAttered2.pdf') — стандартный тестовый вектор: их SHA-1 дайджесты совпадают, но содержимое различается. SHA-2 (FIPS 180-4, 2012) включает шесть хэшей: преемники SHA-1 — SHA-224, SHA-256, SHA-384, SHA-512 плюс два усечённых варианта SHA-512/256 и SHA-512/224. Внутренне SHA-256 использует шесть логических функций (Ch, Maj, Σ0, Σ1, σ0, σ1) с 64 раундовыми константами K[t] = ⌊∛(первые 32 бита дробной части t-го простого числа)⌋ — конструкция кубического корня из простого числа чисто эстетическая и не играет роли в безопасности. SHA-256 — рабочая лошадка с ~2010 года и де-факто стандарт для TLS 1.3 (RFC 8446), proof-of-work Bitcoin (до обсуждений перехода в 2025) и большинства хранилищ с адресацией по содержимому. SHA-512/256 быстрее на 64-битном оборудовании, поскольку использует 64-битные слова и выполняет сжатие SHA-512, а затем усекает. SHA-3 (FIPS 202, 2014) и Keccak (оригинальная заявка) используют принципиально другую структуру: губчатую конструкцию Keccak-f[1600] с 1600-битным состоянием и чередующимися фазами поглощения/выжимания. SHA-3 имеет те же размеры дайджестов, что и SHA-2, но устойчив к атаке расширения длины, поражающей хэши Меркля-Дамгарда — полезное свойство при хэшировании MAC с секретным префиксом. BLAKE2 (RFC 7693) быстрее SHA-256 на программном уровне и используется в WireGuard, Argon2 и ряде современных протоколов. Эта страница выполняет SHA-1, SHA-256, SHA-384 и SHA-512 в браузере через SubtleCrypto.digest (который вызывает нативный код платформы — OpenSSL/BoringSSL в Chromium, NSS в Firefox, эквивалент в Safari), и откатывается на чистую JS-реализацию MD5, поскольку SubtleCrypto не предоставляет MD5 (согласно W3C Web Crypto API, MD5 имеет статус 'recommend-only'). Для файла 10 МБ SHA-256 в V8 работает на ~400 МБ/с на современном ноутбуке, а чистый JS MD5 — на ~100–150 МБ/с; SHA-семейство через Web Crypto в 3–4 раза быстрее любой чистой JS-реализации, поэтому страница направляет SHA-1+ через нативный интерфейс.
- MD5 (Rivest 1991, RFC 1321): 128-битный дайджест, 512-битный блок, 64 раунда, Меркля-Дамгард. Коллизии сломаны с Wang 2004 (2⁴⁰ операций) и сломан выбранный префикс в Flame 2012 — никогда не используйте для нового кода, но допустимо для не-криптографических контрольных сумм, ETags, отпечатков содержимого или ключей кэша.
- SHA-1 (FIPS 180-1, 1995; признан устаревшим FIPS 180-4, 2011): 160-битный дайджест. Коллизия SHAttered (Stevens et al., февраль 2017) стоила ~6500 CPU-лет; коллизии с выбранным префиксом сейчас стоят менее 10 000$. Git перешёл на SHA-256 в 2020; CA/Browser Forum запретил SHA-1 в HTTPS-сертификатах в 2017.
- SHA-256 (FIPS 180-4): 256-битный дайджест, 64 раунда Ch/Maj/Σ0/Σ1/σ0/σ1, 64 раундовые константы K[t], полученные из ∛(простого числа) дробных частей. Рабочая лошадка для TLS 1.3 (RFC 8446), большинства хранилищ с адресацией по содержимому и майнинга Bitcoin. 256-битный уровень безопасности даёт ~128-битную устойчивость к коллизиям.
- SHA-384/SHA-512 (FIPS 180-4): SHA-512 использует 64-битные слова, 80 раундов, 1024-битный блок. Примерно в 1,5–2 раза быстрее SHA-256 на 64-битном оборудовании. SHA-384 — это SHA-512, усечённый до 384 бит; SHA-512/256 — SHA-512, усечённый до 256 бит, с лучшей устойчивостью к расширению длины, чем SHA-256.
- SHA-3 (FIPS 202, 2014) / Keccak: губчатая конструкция с перестановкой Keccak-f[1600], скорости 1088/832/576 бит для SHA3-256/384/512. Устойчив к атакам расширения длины, поражающим хэши Меркля-Дамгарда — полезно для MAC с секретным префиксом.
- BLAKE2 (RFC 7693) и BLAKE3 — современные быстрые хэши; BLAKE2s — типичный для вывода ключа MAC, BLAKE2b используется в WireGuard и многих протоколах, BLAKE3 добавляет дерево Меркля для параллельного хэширования. Не в Web Crypto по состоянию на 2025 год, поэтому страница их не предоставляет.
- Web Crypto API (W3C): SubtleCrypto.digest('SHA-256', data) возвращает Promise<ArrayBuffer>, вычисленный нативным кодом платформы. ~400 МБ/с в V8 для SHA-256, ~100–150 МБ/с для чистого JS MD5 — разрыв в 3–4 раза объясняет, почему страница направляет SHA-1+ через SubtleCrypto.
- Предостережение о расширении длины: H(secret || message) подделывается для любого хэша Меркля-Дамгарда (MD5, SHA-1, SHA-2), если атакующий знает дайджест и длину сообщения. HMAC (RFC 2104) и SHA-3 избегают этого. Для MAC используйте HMAC-SHA-256 или KMAC; для хэширования ненадёжного входа подходит обычный дайджест.
Примеры
Тестовый вектор FIPS 180-2: пустая строка и 'abc'
Вход: '' (пусто, 0 байт)
MD5: d41d8cd98f00b204e9800998ecf8427e (32 hex-символа)
SHA-1: da39a3ee5e6b4b0d3255bfef95601890afd80709 (40 hex-символов)
SHA-256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 (64 hex-символа)
SHA-512: cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
Вход: 'abc' (3 байта, канонический тестовый вектор FIPS)
MD5: 900150983cd24fb0d6963f7d28e17f72
SHA-1: a9993e364706816aba3e25717850c26c9cd0d89d
SHA-256: ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
SHA-512: ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f
Длина каждого выхода фиксирована алгоритмом (MD5 128 бит, SHA-1 160 бит,
SHA-256 256 бит, SHA-512 512 бит) независимо от длины входа.56-байтовый тестовый вектор FIPS 180-2 (несколько блоков)
Вход: 'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq' (56 байт)
SHA-256: 248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1
SHA-512: 8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018
50d1c9ef3504cabb287a00833cf81a7e (128 hex-символов - показаны первые 64,
дайджест занимает 64 байта / 1024 бита)
Этот 56-байтовый вектор охватывает два 512-битных блока SHA-256 и проверяет
расписание сообщений (расширение sigma_0 / sigma_1 слов 16..63).
Это эталонный вход NIST CAVP для SHA-256 и канонический
способ убедиться, что цикл расписания сообщений реализован корректно.
Если он совпадает, то заполнение блоков, добавление длины и финальное сложение
состояний работают правильно. SHA-512 использует ту же структуру Меркла-Дамгарда
с размером слова 64 бита и 80-шаговым расписанием, поэтому тот же 56-байтовый
вход даёт дайджест из 128 hex-символов.Лавинный эффект и ловушка кодировки
Вход: '' (пусто) MD5: d41d8cd98f00b204e9800998ecf8427e
Вход: 'a' (один байт) MD5: 0cc175b9c0f1b6a831c399e269772661
Добавление одного байта меняет каждый бит выхода - это и есть лавинное
свойство. То же справедливо для регистра (a -> A меняет 0x61 на 0x41, один бит
на позиции 0x20) и для конечных пробелов. Также обратите внимание, что один и тот же
видимый текст с конечным '\n' или с UTF-8 BOM (0xEF 0xBB 0xBF) и без них
даёт разные дайджесты, поэтому сопоставление с опубликованной контрольной суммой
требует совпадения точной последовательности байтов, а не
видимых символов. Браузеры и Node сначала пропускают строки через TextEncoder,
чтобы байты входа были детерминированными; JS-реализация MD5, принимающая строку
напрямую, выдаёт неверные хеши для не-ASCII входа.Проверка целостности файла с помощью sha256sum
$ sha256sum ubuntu-24.04-desktop-amd64.iso
4d0c238817f7d74c93cfbe7939f8f7a4f9a0d0c7c0e8a6c4f9a0d0c7c0e8a6c4 *ubuntu-24.04-desktop-amd64.iso
1. Перетащите тот же .iso в файловый режим этой страницы и выберите SHA-256.
2. Скопируйте 64-символьный дайджест в поле сравнения.
3. Если дайджесты совпадают, скачанный файл побайтно идентичен файлу издателя.
Несовпадение означает, что файл повреждён, скачан частично или
относится к версии, отличной от указанной в манифесте.
Для одного и того же файла MD5 и SHA-1 дают дайджесты в 32 и 40 символов соответственно;
SHA-256 и SHA-512 — 64 и 128 символов. Перед сравнением убедитесь, что контрольная сумма
издателя использует тот же алгоритм.Часто задаваемые вопросы
Какие алгоритмы поддерживает инструмент?
Обычно MD5, SHA-1, SHA-256, SHA-384, SHA-512, иногда SHA-3 и RIPEMD-160. SHA-256 — стандарт для современных задач; MD5 и SHA-1 годятся только для контрольных сумм без требований к безопасности.
Хеширование — это то же самое, что шифрование?
Нет. Хеширование одностороннее: по хешу нельзя восстановить исходный вход (кроме перебора по очень маленькому множеству). Шифрование обратимо при наличии ключа. Хеши применяют для отпечатков и проверки целостности, шифрование — для конфиденциальности.
Где выполняется хеширование?
Всё хеширование происходит в вашем браузере через Web Crypto API или чисто JS-реализации. На сервер ничего не отправляется. Это легко проверить во вкладке Network во время вставки данных.
Почему один и тот же текст даёт другой хеш на другом сайте?
Обычно дело в предобработке: переводы строк (CRLF против LF), пробелы в конце, кодировка (UTF-8 против UTF-16) или автоматическое добавление перевода строки. Сами алгоритмы хеширования детерминированы и не зависят от реализации.
Можно ли «развернуть» хеш обратно?
Математически — нет. На практике короткие входы из небольшого набора (популярные пароли, словарные слова, короткие числа) можно найти по предвычисленным радужным таблицам. Именно поэтому для всего конфиденциального применяют соль и медленные хеши вроде bcrypt или Argon2 — этот инструмент их не заменяет.
Можно ли хешировать пароли этим инструментом?
Нет. SHA-256 сам по себе слишком быстр для хранения паролей. Используйте bcrypt, scrypt или Argon2 с уникальной солью на пользователя и подобранным фактором сложности. Семейство SHA подходит для проверки целостности файлов, контентной адресации и подписей — но не для паролей.
Почему хеши имеют разную длину?
У каждого алгоритма фиксированный размер дайджеста: MD5 — 128 бит (32 hex-символа), SHA-1 — 160 бит (40 символов), SHA-256 — 256 бит (64 символа), SHA-512 — 512 бит (128 символов). Чем длиннее, тем выше устойчивость к коллизиям, но и сам хеш занимает больше места.