Генератор хешей

Вычисляйте дайджесты MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA-3, Keccak-256, RIPEMD-160, BLAKE2b или BLAKE2s для любого текста или файла — удобно для контрольных сумм, проверки целостности и ключей кеша. Вставьте ожидаемый дайджест, чтобы проверить его по вашим данным, или вставьте неизвестную хеш-строку, чтобы определить, какой алгоритм, вероятно, её создал. SHA-1/256/384/512 берутся из нативного WebCrypto вашего браузера; остальные — самодостаточные реализации на чистом JavaScript, поэтому всё работает локально. См. также Генератор случайных чисел для последовательностей с заданным зерном.
Работает полностью локально — ничего не загружается. Входные данные до 200 МБ.
Ввод: Алгоритмы:
Формат вывода: SHA-1 устарел — предпочитайте SHA-256/512, если вам не нужен именно он.
Строки дайджестов имеют вид «АЛГОРИТМ  хеш», поэтому их можно копировать в примечания к релизу или манифесты загрузок.
Вставьте дайджест, который дала страница загрузки или манифест. Инструмент допускает регистр, пробелы, двоеточия, префиксы вида sha256=, обёртки вида MD5 (file.exe) = и многострочный вывод md5sum, затем сравнивает его с отмеченными выше алгоритмами.
Вставьте неизвестную хеш-строку. Инструмент читает её длину, набор символов и префиксы и перечисляет алгоритмы, которые могли её создать — от простого hex-дайджеста до парольных хешей в стиле PHC, таких как $2b$… или $argon2id$….
Выбор алгоритма:
SHA-256 — разумный выбор по умолчанию для проверки целостности сегодня. SHA-512 надёжнее и работает быстрее на 64-битном железе ценой более длинного вывода; SHA-384 — промежуточный вариант, когда нужен дайджест SHA-2 с укороченной длиной. SHA-3 — независимо разработанный стандарт NIST (а не обновление SHA-2), и это стандартный ответ, когда нужен алгоритм без общей родословной с SHA-2; Keccak-256 — вариант до стандартизации, который использует Ethereum и некоторые другие системы; он отличается от SHA3-256 одним байтом дополнения. BLAKE2b/BLAKE2s — быстрые современные хеши, созданные для программной реализации; RIPEMD-160 — более старая конструкция, которую всё ещё используют в контекстах Bitcoin и OpenPGP. SHA-1 и MD5 криптографически взломаны для враждебных входных данных, но остаются корректными и широко используются для дедупликации, устаревших систем и не-злонамеренных контрольных сумм — никогда не используйте их там, где злоумышленник может выбрать содержимое. Ни один хеш сегодня не является «постквантово стойким» в том смысле, в котором квантовые компьютеры угрожают прежде всего подписям и обмену ключами — алгоритм Гровера лишь вдвое снижает эффективную длину хеша, поэтому SHA-256 уже с запасом выше практической границы. Хеши детерминированы: одни и те же байты всегда дают один и тот же дайджест, и именно поэтому они полезны для проверки, что загрузка или конфигурационный файл не повреждены.
Ищете китайский национальный хеш?
SM3 (GB/T 32905-2016) — дайджест, предписанный в китайской коммерческой криптографии, не входит в эту страницу — у него есть собственный инструмент с поддержкой HMAC-SM3 на странице Генератор хешей SM3, вместе с остальным пакетом SM: SM4 (блочный шифр), SM2 (подписи и шифрование) и SM9 (криптография на основе идентификаторов).
Генератор хешей — каждый алгоритм с нуля
Одним предложением: криптографическая хеш-функция — это односторонний блендер: она берёт любое количество байтов и сжимает их в отпечаток фиксированной длины так, что один и тот же вход всегда даёт один и тот же отпечаток, но отпечаток ничего не говорит о том, как восстановить вход. Эта страница запускает одиннадцать из них полностью внутри вкладки вашего браузера.

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

MD5

Что это. MD5 (1992) сжимает любой вход в отпечаток длиной 128 бит (32 hex-символа). Он создан, чтобы быть быстрым на компьютерах 1990-х, и так и есть — именно поэтому его до сих пор повсюду: страницы загрузки ПО, кеши дедупликации файлов, устаревшие ключи баз данных.

Как это работает, интуитивно. Вход режется на куски по 64 байта. Каждый кусок четырежды перемешивается в 128-битное текущее состояние (четыре слегка разных раунда смешивания), а после последнего куска состояние выводится как дайджест. Перемешивание строится из сложений, поворотов и обращений к таблицам — тогда дёшево, и сейчас дёшево.

Стоит ли использовать? Для контрольных сумм, где никто не пытается вас обмануть — обнаружение повреждённой загрузки, поиск одинаковых файлов, — да, он по-прежнему прекрасно сообщает о повреждении. Для всего состязательного нет: с 2004 года исследователи могут за секунды создать два разных файла с одинаковым MD5, а настоящие подделки сертификатов с коллизиями MD5 случились в 2008 году. Относитесь к нему как к серийному номеру, а не как к замку.

Частые ошибки. Использовать MD5 для паролей (слишком быстро — см. Генератор хешей паролей, что должно использоваться вместо); доверять файлу, потому что «MD5 совпадает», когда атакующий тоже опубликовал MD5; и вставлять всю строку MD5 (file) = hash вместо одного хеша — поле проверки выше принимает оба варианта.

SHA-1

Что это. SHA-1 (1995, NSA) выдаёт дайджест длиной 160 бит (40 hex-символов). Двадцать лет он был хешем целостности по умолчанию для Git, сертификатов TLS и подписей PGP.

Как это работает, интуитивно. Тот же семейный рецепт, что у MD5, но с 160-битным состоянием, 80 раундами смешивания на кусок в 64 байта и более широким набором операций. Дополнительные раунды должны были затруднить обратное проектирование блендера.

Стоит ли использовать? Нет, для всего состязательного. Теоретический взлом стал практическим в 2017 году, когда Google создал два разных PDF с одинаковым значением SHA-1 (атака SHAttered, около 6500 процессорных лет). Git по-прежнему хранит объекты под SHA-1, но рассматривает его лишь как идентификатор и с тех пор добавил обнаружение коллизий. Для нового кода используйте SHA-256 или SHA-3.

Частые ошибки. Считать, что 160 бит «всё ещё достаточно длинно» — взлом касается внутренней структуры, а не перебора; и путать RIPEMD-160 с SHA-1, потому что оба имеют длину 40 hex-символов (поле определения идентификатора выше различает их).

SHA-2: SHA-256, SHA-384 и SHA-512

Что это. Семейство SHA-2 (2001, NSA) — рабочая лошадка современной проверки целостности. SHA-256 даёт 256 бит (64 hex-символа), SHA-512 — 512 бит, а SHA-384 — это SHA-512 с результатом, обрезанным до 384 бит — полезно, когда протокол требует более короткий тег.

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

Стоит ли использовать? Да — SHA-256 сегодня — ответ по умолчанию для контрольных сумм файлов, подписи кода и отпечатков сертификатов; практического взлома не известно после двух десятилетий анализа. Используйте SHA-384/512, когда нужен больший запас или когда платформа выполняет их быстрее.

Частые ошибки. Использовать один SHA-256 для паролей — это быстрый хеш, и скорость там враг (используйте bcrypt/scrypt/Argon2id); и путать длину дайджеста со стойкостью к коллизиям в состязательных сценариях — длина лишь задаёт потолок.

SHA-3 (SHA3-256 / SHA3-512) и Keccak-256

Что это. SHA-3 (2015, стандартизирован на основе заявки Keccak Бертони, Даймена, Пи́терса и Ван Ассхе) — третий стандарт хеширования NIST. Он ничего не разделяет с внутренностями SHA-2 — его выбрали именно для того, чтобы он был независимой запасной заменой на случай, если SHA-2 когда-нибудь падёт.

Как это работает, интуитивно. Вместо того чтобы перемешивать куски через небольшое состояние, Keccak повторяет «впитывание и выжимание»: вход поглощается бит за битом в губку 5×5×64 бит, вся губка перемешивается фиксированной перестановкой (24 раунда битовых операций по всему состоянию), а затем выжимаются биты дайджеста. Картина губки — вся идея: биты ёмкости никогда не выводятся, и именно они делают функцию односторонней.

Keccak-256 против SHA3-256. Они отличаются ровно одним байтом дополнения. Исходная заявка команды Keccak дополняла последний блок байтом 0x01; NIST изменил стандартное дополнение на 0x06 (разделение доменов, которое использует Keccak эпохи SHA-2). Ethereum принял исходное дополнение, поэтому его «keccak256» отличается от стандартного SHA3-256 для каждого входа. Эта страница предлагает оба, отмечаются они отдельно.

Стоит ли использовать? Да — либо как основной выбор, когда политика требует алгоритм, не относящийся к SHA-2, либо там, где экосистема уже его использует. Частые ошибки: считать SHA3-256 и Keccak-256 взаимозаменяемыми (это не так — сравните две строки, которые эта страница выдаёт для одного входа); и считать, что «SHA-3» заменяет SHA-2 — оба стойкие, SHA-2 по-прежнему более широко развёрнут.

RIPEMD-160

Что это. RIPEMD-160 (1996, консорциум RIPE европейских академиков, укреплённый Добербином, Босселарсом и Преневелем) выдаёт 160 бит. Это полностью европейская конструкция, намеренно независимая от семейства SHA, разработанного NSA.

Как это работает, интуитивно. Каждый кусок в 64 байта обрабатывается двумя параллельными линиями по 80 раундов с разными константами и величинами поворотов; в конце две линии и старое состояние комбинируются. Двухдорожечная структура была способом разработчиков противостоять дифференциальным атакам, которые ломали другие хеши 1990-х.

Стоит ли использовать? На практике он выживает в основном внутри других систем: адреса Bitcoin хешируют свои открытые ключи как RIPEMD-160(SHA-256(pk)), старые ключи OpenPGP предлагают его как вариант хеша, а также он традиционен для кусков BitTorrent v1 наряду с SHA-1. Практической атаки коллизией на него нет, но размер 160 бит даёт ему самый малый запас прочности на этой странице. Для нового самостоятельного использования предпочитайте SHA-256 или SHA-3.

Частые ошибки. Считать, что две параллельные линии делают его «вдвое сильнее» — размер вывода и ограничивает стойкость к коллизиям; и путать его с SHA-1 (та же длина 40 hex-символов; поле определения идентификатора выше перечисляет обе возможности рядом).

BLAKE2b-512 и BLAKE2s-256

Что это. BLAKE2 (2013, Аумассон, Невес, Уилкокс-О’Хирн и Винлерн) — хеш, созданный для скорости в программах: BLAKE2b нацелен на 64-битные платформы с выводом до 512 бит, BLAKE2s — на 32-битные платформы с выводом до 256 бит.

Как это работает, интуитивно. Он происходит от финалиста конкурса SHA-3 BLAKE, ядро которого — ключевая перестановка, заимствованная из потокового шифра ChaCha: матрица слов 4×4 перемешивается чередующимися шагами смешивания по столбцам и по диагоналям — как перетасовка сетки сначала сверху вниз, затем по диагоналям — за 12 (BLAKE2b) или 10 (BLAKE2s) раундов на кусок. Поскольку эти шаги прекрасно ложатся на инструкции процессора, BLAKE2 часто быстрее MD5, при этом обеспечивая стойкость, сравнимую с SHA-3.

Стоит ли использовать? Да — это полностью современная, не взломанная конструкция, популярная в ПО, чувствительном к производительности (целостность пакетов в некоторых экосистемах, хранилища с адресацией по содержимому, дедупликация резервных копий), и как быстрый MAC. На этой странице BLAKE2b-512 даёт самые длинные дайджесты, а BLAKE2s-256 — компактный современный вариант.

Частые ошибки. Считать, что «быстрее значит слабее» — BLAKE2 быстрее по замыслу, а не потому, что срезали углы; и не знать, что BLAKE2 также принимает ключ (превращаясь в MAC) или строку персонализации — эта страница всегда использует его в простом режиме без ключа.

Как читать поля проверки и определения

Проверка. Поле проверки нормализует всё, что вы вставили — верхний или нижний регистр, двоеточия через каждые две цифры, префикс sha256=, обёртку в стиле BSD SHA256 (file) = hash, строку GNU md5sum с именем файла после хеша, случайные \r\n — затем пересчитывает каждый отмеченный алгоритм по вашему текущему входу (текст или выбранный файл) и сообщает о каждом совпавшем алгоритме. Зелёное совпадение означает «эти байты — именно то, что хешировал издатель»; красный — ни один из отмеченных алгоритмов его не дал: попробуйте отметить больше алгоритмов или проверьте, не обрезана ли вставка.

Определение. Поле определения ничего не хеширует; оно читает форму строки. Длина сужает кандидатов: 32 hex-символа могут быть MD5, 40 — SHA-1 или RIPEMD-160, 64 — SHA-256 / SHA3-256 / Keccak-256 / BLAKE2s-256, 96 — SHA-384, 128 — SHA-512 / SHA3-512 / BLAKE2b-512. Префиксы выдают парольные хеши ($2a$/$2b$/$2y$ bcrypt, $argon2id$, $scrypt$, $6$ sha512crypt, $1$ MD5-crypt) — это другой вид (см. Генератор хешей паролей), и эта страница намеренно их не вычисляет. Строка с символами +, / и =, длина которой кратна 4, скорее является закодированными данными Base64, чем hex-дайджестом; инструмент декодирует её и сообщает, каким байтовым размером она была бы.

Что определение может, а что не может сказать. Длина и набор символов — отпечатки формата, а не доказательство алгоритма: две 64-символьные hex-строки могут происходить из SHA-256 или из обрезанного SHA-512. Определитель ранжирует возможности; поле проверки — то, что доказывает, какому алгоритму на самом деле соответствуют ваши байты.

Все одиннадцать одним взглядом
Алгоритм Дайджест Создан Дайджест «The quick brown fox jumps over the lazy dog»
MD5128 бит19929e107d9d372bb6826bd81d3542a419d6
SHA-1160 бит19952fd4e1c67a2d28fced849ee1bb76e7391b93eb12
SHA-256256 бит2001d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
SHA-384384 бита2001ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1
SHA-512512 бит200107e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6
SHA3-256256 бит201569070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04
SHA3-512512 бит201501dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450
Keccak-256256 битдо 20154d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15
RIPEMD-160160 бит199637f332f68db77bd9d7edd4969571ad671cf9dd3b
BLAKE2b-512512 бит2013a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918
BLAKE2s-256256 бит2013606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812

Каждый дайджест в таблице выше получен движками на этой самой странице — отметьте все алгоритмы, нажмите «Пример» и сравните. Строки SHA-3, Keccak, RIPEMD-160 и BLAKE2 получены из собственного ядра crypto-shared.js, которое используется во всех криптоинструментах этого сайта.

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

Какому полю доверять для загрузки? Полю проверки, с отмеченным SHA-256 — большинство издателей сегодня подписывают SHA-256 или SHA-512. Поле определения лишь называет кандидатов; оно никогда ничего не доказывает о вашем файле.

Зачем вообще Keccak-256 в списке? Потому что Ethereum, Swarm и некоторые системы учёта стандартизировались на дополнении до стандарта. Если вы проверяете keccak256 Ethereum, нужно использовать именно эту строку, а не SHA3-256.

Могут ли два разных входа иметь один дайджест? Теоретически да — бесконечно много входов отображаются в конечное множество дайджестов (принцип Дирихле). На практике найти такую пару до тепловой смерти Вселенной — вот о чём «стойкость к коллизиям», и каждый алгоритм выше, кроме MD5 и SHA-1, всё ещё держится.

Хеши — это шифрование? Нет. Шифрование обратимо с ключом; хеш — односторонний блендер. Ничто на этой странице не может быть «расшифровано» обратно в ваш текст — и это свойство, а не ограничение.