Сгенерировать хеш
MD5, SHA-1, SHA-256, SHA-384 и SHA-512 для текста или файла любого размера. Удобно, чтобы проверить, совпадает ли скачанный файл с опубликованной контрольной суммой. Ничего не сохраняется.
- Не сохраняется
- Без очереди и ожидания
- Без регистрации и водяных знаков
Текст хешируется в UTF-8. Чтобы проверить скачанный файл, перетащите его сюда.
Как это работает
Вставьте текст или перетащите файл
Текст хешируется как UTF-8. Файл читается и хешируется здесь же; он не сохраняется.
Смотрите все хеши сразу
Все пять алгоритмов вычисляются одновременно, так что не нужно заранее знать, какой именно вам нужен.
Сравните с ожидаемым значением
Вставьте полученную контрольную сумму — сверка выполнится автоматически. Сравнение по символам на глаз — как раз то место, где случаются ошибки.
Что хеш доказывает, а что нет
Хеш — это отпечаток фиксированной длины для любого объёма данных, и у него есть два свойства, которые стоит сформулировать точно. Он односторонний: нет операции, которая превратит хеш обратно в данные, потому что почти вся информация утрачена. И он чувствительный: измените один бит на входе — и изменится примерно половина битов на выходе. Именно поэтому хеш позволяет убедиться, что файл скачался целым или что два файла одинаковы, не сравнивая их байт за байтом.
MD5 и SHA-1 взломаны, но всё равно здесь есть — и на то есть причина. Для обоих существуют практические атаки на коллизии: для MD5 с 2004 года, для SHA-1 — продемонстрированная на реальной паре PDF в 2017-м. Это значит, что можно создать два разных файла с одинаковым хешем. Поэтому против злоумышленника ни один из них ничего не доказывает. Но оба по-прежнему отлично выявляют случайные повреждения, а очень многие программы до сих пор публикуют контрольные суммы MD5, так что сверить такую сумму со скачанным файлом — вполне законная потребность. Для всего, где кто-то может попытаться вас обмануть, используйте SHA-256.
Никогда не хешируйте ими пароли. Это самое важное на этой странице. Хеш-функции созданы быстрыми, а для паролей скорость — именно то, что нужно меньше всего: современная видеокарта вычисляет миллиарды хешей SHA-256 в секунду, поэтому украденная база хешированных паролей взламывается за часы. Для хранения паролей нужна намеренно медленная функция с индивидуальной солью для каждого пользователя — argon2, bcrypt или scrypt, — специально созданная так, чтобы расходовать время и память. Простой SHA-256 от пароля — это уязвимость, а не защита, как бы он ни выглядел в столбце базы данных.
Сравнение вычисленного хеша с опубликованным на той же странице, откуда вы скачали файл, доказывает меньше, чем кажется: тот, кто смог подменить файл, смог бы подменить и число рядом с ним. Контрольная сумма ценнее всего, когда она получена из другого места — из подписанного релиза, по отдельному каналу или записана вами заранее.
Если нужно другое
В командной строке это одна команда: shasum -a 256 file в macOS и Linux, certutil -hashfile file SHA256 в Windows, и md5sum или sha1sum, если опубликована старая контрольная сумма. Они читают файл потоково, а не загружают его целиком, поэтому ограничения по размеру нет — и это главное отличие для всего, что больше нескольких сотен мегабайт: страница, держащая весь файл в памяти, просто не справится.
Чтобы убедиться, что релиз подлинный, а не просто целый, одного хеша недостаточно. Подписи GPG — gpg --verify file.sig file — доказывают, кто создал файл, а на этот вопрос контрольная сумма ответить не может. Большинство серьёзных проектов публикуют и то и другое, и важна именно подпись.
Частые вопросы
Мой файл где-нибудь сохраняется?
Нет. Файл хешируется той же встроенной криптографией, которая обслуживает HTTPS. Ничего не сохраняется, поэтому нет ни лимита размера, ни ожидания соединения.
Есть ли ограничение по размеру?
Ограничивает доступная память, а не фиксированный лимит. Криптография браузера не умеет хешировать файл по частям — ей нужен весь файл в памяти сразу, — поэтому очень большой файл (например, образ DVD) может не обработаться на компьютере, который не способен его удержать. Файлы до нескольких сотен мегабайт на обычном компьютере обрабатываются без проблем. Если большой файл не обработался, вы упёрлись именно в это ограничение, и страница прямо об этом скажет, а не зависнет.
Какой хеш выбрать?
SHA-256 — для всего нового. Это современный стандарт по умолчанию: его используют контрольные суммы программ, дайджесты контейнеров и блокчейн-системы, и известных слабостей у него нет. MD5 или SHA-1 используйте, только когда их требует что-то другое: старая опубликованная контрольная сумма, устаревшая система или Git, который идентифицирует объекты по SHA-1. SHA-512 выбирайте, когда нужен именно более длинный дайджест; на 64-битных компьютерах он часто быстрее SHA-256, а не медленнее.
Можно ли так хешировать пароль?
Можно, но хранить результат нельзя. Это самая распространённая ошибка в этой области, поэтому скажем прямо: MD5, SHA-1 и SHA-256 одинаково не подходят для паролей, и криптостойкость SHA-256 здесь не помогает. Проблема в том, что эти функции БЫСТРЫЕ по замыслу — современная видеокарта вычисляет миллиарды хешей SHA-256 в секунду, поэтому украденная база хешей паролей SHA-256 взламывается с огромной скоростью. Паролям нужна намеренно медленная функция с солью, созданная для этой задачи: bcrypt, scrypt или Argon2. Во всех серьёзных фреймворках она уже встроена.
Почему MD5 отмечен как взломанный?
Потому что сейчас любой может создать два разных файла с одинаковым хешем MD5 на обычном оборудовании за секунды. Так обстоит дело с 2004 года, и это продемонстрировано с реальными последствиями — два PDF с разными договорами, два исполняемых файла, один из которых вредоносный. Поэтому MD5 не может доказать, что файл — тот, который вы ожидали: намеренная подделка может совпасть. Но он по-прежнему вполне годится для выявления случайных повреждений, вроде неудачной загрузки или обрезанной копии, — а именно для этого на самом деле нужно большинство опубликованных сумм MD5. Для задач безопасности его использовать нельзя никогда.
Почему SHA-1 отмечен как взломанный?
По той же причине, только позже. В 2017 году Google и CWI создали два разных PDF с одинаковым хешем SHA-1, а к 2020 году атака стала настолько дешёвой, что с её помощью можно подделывать подписи. Браузеры давно перестали принимать сертификаты SHA-1, а Git переходит с него на другой алгоритм. Если вы выбираете алгоритм сегодня, выбирайте SHA-256.
Как проверить скачанный файл?
Перетащите скачанный файл, затем вставьте контрольную сумму с сайта, откуда вы его взяли, в поле сравнения. Если они совпадают, файл дошёл целым и это именно тот файл, который был опубликован. Если нет, удалите его и скачайте заново. Две оговорки: берите контрольную сумму из официального источника, а не оттуда, где взяли файл, и помните, что контрольная сумма доказывает лишь совпадение файла с тем, что опубликовано на той странице, — если сама страница была взломана, совпадут оба.
Хеши вычисляются правильно?
SHA-1, SHA-256, SHA-384 и SHA-512 вычисляются встроенной в браузер реализацией Web Crypto — тем же кодом, который обслуживает HTTPS. MD5 в Web Crypto нет — намеренно, потому что он взломан, — поэтому здесь он реализован напрямую по RFC 1321 и проверен на тестовых векторах, опубликованных в самом этом документе.
Полезно знать: MD5 и SHA-1 есть здесь потому, что реальные файлы и старые системы всё ещё их используют, а не потому, что они безопасны: оба взломаны для любых задач безопасности и годятся только как контрольные суммы. В Web Crypto нет пошагового вычисления хеша, поэтому файл целиком держится в памяти: очень большие файлы не обработаются, а не будут прочитаны потоково.
Разместите этот инструмент на своём сайте
Бесплатно для любого блога, страницы класса или справочной статьи. Вставьте один фрагмент кода — и посетители смогут пользоваться инструментом прямо на вашей странице.