Генератор хешей: MD5, SHA-1, SHA-256, SHA-512 и HMAC
Вычисляйте хеши MD5, SHA-1, SHA-256, SHA-384 и SHA-512 или HMAC для текста и файлов в браузере и сравнивайте их с ожидаемой контрольной суммой.
Текст хешируется точно в том виде, в котором введён, включая пробелы и переносы строк. Переносы строк в этом поле хешируются как LF.
Перетащите файл сюда или выберите его
Файл не выбран.
Этот файл больше 500 МБ. Файл целиком загружается в память, поэтому браузеру может не хватить памяти или он может работать медленно.
Результаты
Введите текст или выберите файл, чтобы увидеть его хеши.
Значения hex сравниваются без учёта регистра; значения Base64 должны совпадать в точности.
Примечания
- Для MD5 и SHA-1 известны атаки на коллизии, поэтому их не следует использовать для задач безопасности. Применяйте их только для проверок, не связанных с безопасностью, например чтобы сравнить загруженный файл с опубликованной контрольной суммой.
- Хеш — это не шифрование. Этот инструмент не может восстановить исходный текст или файл по хешу.
- Не храните пароли в виде простых хешей. Используйте специальную схему хеширования паролей, например Argon2, scrypt или bcrypt.
- Хеши вычисляются по байтам, поэтому один и тот же текст с другими окончаниями строк (CRLF или LF), другой кодировкой символов или лишними пробелами даёт другой хеш.
- HMAC объединяет хеш с секретным ключом. HMAC-MD5 здесь не предлагается.
- Текст и файлы обрабатываются в вашем браузере и не отправляются в LeedyBox. Очень большие файлы могут обрабатываться медленно, потому что файл целиком считывается в память.
Как пользоваться
- В разделе «Ввод» выберите «Текст», чтобы вычислить хеш введённого или вставленного текста, или «Файл», чтобы вычислить хеш файла с вашего устройства.
- Для файла выберите его или перетащите в область, затем нажмите «Вычислить хеши». Если после этого вы измените «Режим HMAC» или ключ, нажмите кнопку ещё раз.
- Выберите «Формат вывода»: hex строчными буквами, hex заглавными буквами или Base64. При смене формата меняется только запись тех же результатов, повторного вычисления не происходит.
- Чтобы вычислить HMAC вместо обычных хешей, отметьте «Режим HMAC» и введите секретный ключ в появившееся поле. HMAC-MD5 не предусмотрен, поэтому в строке MD5 отображается «Недоступно для HMAC».
- Чтобы проверить скачанный файл, вставьте опубликованное значение в поле «Ожидаемая контрольная сумма (необязательно)». Оно сравнивается со всеми вычисленными результатами, а совпавшая строка отмечается как «Совпадает».
Частые вопросы
Почему мой хеш отличается от того, что выдаёт sha256sum или другой инструмент?
Текстовое поле хеширует символы точно в том виде, в каком они введены, поэтому даже небольшие различия меняют результат. Частая причина — перевод строки в конце: echo hello | sha256sum хеширует «hello» вместе с переводом строки, поэтому SHA-256 отличается от хеша одного «hello», а printf hello | sha256sum перевод строки не добавляет. Одинаковые на вид символы тоже могут храниться по-разному: например, é может быть одной кодовой точкой или буквой e с последующим комбинируемым диакритическим знаком. Чтобы хешировать точные байты файла, используйте «Файл», а не вставляйте его содержимое: текстовое поле кодирует текст в UTF-8, а переводы строк хеширует как LF.
Опубликованная контрольная сумма верна. Почему нет совпадения?
Вставляйте только само значение хеша. Пробелы, табуляции и переводы строк перед сравнением удаляются, поэтому если вставить целую строку из файла контрольных сумм, имя файла станет частью значения, а префикс вроде sha256: тоже помешает совпадению. Сравнение выполняется со всеми вычисленными алгоритмами, поэтому выбирать алгоритм не нужно. Если вставлено только значение, а совпадения всё равно нет, проверьте, что «Режим HMAC» выключен и что контрольная сумма вычислена по MD5, SHA-1, SHA-256, SHA-384 или SHA-512; другие алгоритмы, например SHA-3 или BLAKE2, здесь не вычисляются. В остальных случаях файл, скорее всего, отличается от того, для которого была вычислена сумма: например, это другая версия или файл скачан не полностью.
Что значит, если результат начинается с e3b0c442 или d41d8cd9?
Это хеши пустого ввода (0 байт) в шестнадцатеричной записи: значение SHA-256 начинается с e3b0c442 и заканчивается на b855, а значение MD5 равно d41d8cd98f00b204e9800998ecf8427e. Если «Режим HMAC» выключен, вы увидите их, когда очистите текстовое поле или выберете файл размером 0 байт. Если ваша программа выдаёт одно из этих значений для данных, которые не должны быть пустыми, скорее всего, она хеширует пустую строку или пустой файл.
Можно ли проверить подпись вебхука или API в режиме HMAC?
Часто да, если подпись — это HMAC на основе SHA-1, SHA-256, SHA-384 или SHA-512; HMAC-MD5 не предусмотрен. Отметьте «Режим HMAC», введите секрет подписи, используйте тело запроса как входные данные и вставьте подпись без префикса вроде sha256= в поле «Ожидаемая контрольная сумма (необязательно)»; распознаются подписи и в hex, и в Base64. Входные данные должны состоять из тех же байтов, что были подписаны, поэтому переформатированное тело JSON не совпадёт, а тело с переводами строк CRLF нужно сохранить в файл и хешировать через «Файл». Многие сервисы подписывают не только тело: например, перед ним могут стоять метка времени и разделитель, поэтому уточните в документации сервиса, что именно подписывается.
Мой секретный ключ задан в hex или Base64. Можно ли его использовать?
Только если сервис использует текст ключа как есть. Поле «Секретный ключ (UTF-8)» использует UTF-8-байты введённых символов и не декодирует hex или Base64, поэтому если сервис перед подписью декодирует ключ, вычисленный здесь HMAC не совпадёт. Пробелы в начале или в конце поля тоже считаются частью ключа.
Как создать хеш Subresource Integrity (SRI)?
Выберите «Файл», укажите скрипт или таблицу стилей, убедитесь, что «Режим HMAC» выключен, нажмите «Вычислить хеши» и выберите «Base64» в поле «Формат вывода». Добавьте sha384- перед значением SHA-384, чтобы получить значение атрибута integrity; sha256- и sha512- работают так же. Файл должен побайтно совпадать с тем, который загружает браузер, иначе браузер откажется его использовать. Для файла, загружаемого с другого источника (origin), также нужен атрибут crossorigin, а его сервер должен разрешать CORS.
Чем отличается вывод в hex и в Base64?
Оба представляют один и тот же дайджест. Hex использует два символа на байт, то есть 64 символа для SHA-256, и именно его выводят инструменты вроде sha256sum; Base64 короче — 44 символа для SHA-256. Вывод Base64 использует стандартный алфавит с + и / и дополнением =, а не вариант URL-safe с - и _, поэтому значение в варианте URL-safe или значение, из которого удалено дополнение =, может не совпасть при сравнении.