MD5 и SHA-1 небезопасны для паролей: для их хранения используйте bcrypt, scrypt или Argon2.
MD5 даёт 128-битный дайджест из 32 шестнадцатеричных символов; MD5 слова hello — 5d41402abc4b2a76b9719d911017c592. Он всё ещё встречается в контрольных суммах загрузок и ключах кеша, но коллизии можно создать намеренно, поэтому от подмены он не защищает.
Как пользоваться
- Введите или вставьте текст — все хеши обновляются по мере ввода.
- Или переключитесь на «Файлы» и перетащите один или несколько файлов любого размера. Они читаются частями с индикатором прогресса.
- Нажмите на хеш, чтобы скопировать его. «ПРОПИСНЫЕ» и «Base64» меняют формат вывода.
- Включите HMAC и введите секретный ключ, чтобы получить подписи HMAC вместо обычных хешей.
- Вставьте ожидаемый хеш в поле проверки: совпавшая строка подсветится, иначе появится «Ни один хеш не совпадает».
- Хеши вычисляются в браузере с помощью WebAssembly. Тексты, файлы и ключи никуда не отправляются.
- Текст хешируется как байты UTF-8 ровно в том виде, в каком введён, включая пробелы и переводы строк.
- MD5 и SHA-1 годятся для контрольных сумм, но небезопасны. Для важных данных используйте SHA-256, SHA-3 или BLAKE3, а для паролей — bcrypt или Argon2.
- HMAC работает с MD5, SHA-1, SHA-2 и SHA-3. BLAKE2b, BLAKE3 и CRC32 скрыты, пока HMAC включён.
- Проверка не учитывает регистр и пробелы и принимает также значения в Base64.
Зачем нужен хеш
Криптографическая хеш-функция превращает любые данные в отпечаток фиксированной длины. Одинаковые байты всегда дают одинаковый хеш, а изменение одного бита меняет примерно половину битов результата. SHA-256 слова hello равен 2cf24dba 5fb0a30e 26e83b2a c5b9e29e 1b161e5c 1fa7425e 73043362 938b9824 (пробелы добавлены для удобства чтения), а у Hello с заглавной буквы значение совсем другое.
Хеши применяют для сверки загруженных файлов с опубликованной контрольной суммой, поиска дубликатов, хранения по содержимому, как в Git, и подписи запросов к API через HMAC. Текст хешируется как байты UTF-8 ровно в том виде, как введён, поэтому лишний пробел в конце или перевод строки Windows меняют результат.
Какой алгоритм выбрать
Для MD5 (128 бит) и SHA-1 (160 бит) известны практические атаки на коллизии: они годятся для поиска случайных повреждений, но не для защиты. SHA-256 и SHA-512 (FIPS 180-4) — надёжный выбор для контрольных сумм и подписей. SHA-3 (FIPS 202) устроен иначе и служит запасным вариантом к SHA-2. BLAKE3 — современный хеш, очень быстрый на больших файлах. CRC32 — 32-битный код обнаружения ошибок из ZIP, PNG и Ethernet: он ловит сбои передачи, но подделывается без труда.
Хеширование — не шифрование
Хеш нельзя расшифровать обратно. Однако короткие или распространённые входные данные подбираются перебором, поэтому пароли хранят с помощью медленных функций с солью — Argon2, scrypt или bcrypt, — а не простым SHA-256. HMAC (RFC 2104) подмешивает к хешу секретный ключ, и создать или проверить подпись может только тот, у кого есть ключ.
Частые вопросы
Как проверить контрольную сумму файла?
Переключитесь на «Файлы», перетащите скачанный файл и вставьте опубликованную сумму в поле проверки. Строка совпавшего алгоритма подсветится; если совпадений нет, файл другой или повреждён.
Можно ли обратить или расшифровать хеш?
Нет, хеш — односторонняя функция. Короткие данные вроде популярных паролей можно найти перебором, но ключа, превращающего хеш обратно в исходные данные, не существует.
Безопасен ли ещё MD5?
Только для задач без требований к безопасности, например для поиска случайных изменений или дубликатов. Специально создать разные файлы с одинаковым MD5 можно, поэтому для подписей и защиты от подмены используйте SHA-256 или новее.
Чем SHA-256 отличается от SHA-512?
SHA-256 даёт 256 бит (64 шестнадцатеричных символа), SHA-512 — 512 бит (128 символов). Оба входят в семейство SHA-2 и считаются надёжными; на 64-битных процессорах SHA-512 часто работает быстрее.
Загружаются ли мои файлы для вычисления хеша?
Нет. Файлы читаются по частям в браузере и хешируются на WebAssembly, так что даже файлы в несколько гигабайт не покидают устройство.
Почему мой хеш не совпадает с хешем из кода?
Обычно различаются входные байты: лишний перевод строки, другая кодировка текста или вывод в hex вместо Base64. Проверьте пробелы и окончания строк и сравнивайте в одном формате.