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

SHA-1 производит 160-битный дайджест (40 шестнадцатеричных символов) и является хешем, стоящим за ID объектов git, устаревшими контрольными суммами SVN и кучей систем подписи до 2017 года. Вставьте любой текст, и вы получите детерминированный хеш. Важная оговорка сразу: SHA-1 сломан по стойкости к коллизиям (SHAttered, 2017) и не должен использоваться для новых подписей или хранения паролей, он годится только для неконфликтных проверок целостности.

Как вычислить хеш SHA-1

  1. 1

    Вставьте ваш ввод

    Любой текст: строка, целый файл, выгруженный в текст, или шестнадцатеричная последовательность.

  2. 2

    Кодировка UTF-8

    Ввод сериализуется в байты UTF-8 перед хешированием, что соответствует значению по умолчанию в OpenSSL, Python hashlib и Node crypto.

  3. 3

    Запускается цикл Меркла-Дамгарда

    Сообщение дополняется, разбивается на 512-битные блоки и пропускается через функцию сжатия SHA-1 по 80 раундов на блок.

  4. 4

    Скопируйте 40-символьный шестнадцатеричный дайджест

    Вывод всегда составляет 40 шестнадцатеричных символов в нижнем регистре (160 бит).

SHA-1 с первого взгляда

Свойство Значение
Размер вывода 160 бит / 40 шестнадцат. символов
Размер блока 512 бит
Раунды 80
Стойкость к коллизиям Сломана (2^63, выбранный префикс)
Стойкость к прообразу Сохраняется (на момент написания)
Скорость ~500 МБ/с на одном современном ядре

Где SHA-1 еще приемлем

  • Git. ID коммитов и блобов, это SHA-1 (с SHA-256 по выбору). Коллизии запутали бы историю, но не могут подделать коммит без ключа автора.
  • Дедупликация без безопасности. Контентная адресация в объектном хранилище, где модель угроз не включает атакующего.
  • Обратно совместимые API. Устаревшие вебхуки вроде X-Hub-Signature (v1) от GitHub.
  • Криминалистические идентификаторы. Снятие отпечатков файлов для дедупликации по архиву.

Где SHA-1 неприемлем

  • TLS-сертификаты. Браузеры перестали доверять сертификатам SHA-1 начиная с 2017 года.
  • Подпись кода. Microsoft, Apple и Mozilla отвергли подписи SHA-1.
  • Хеширование паролей. Используйте Argon2id или bcrypt.
  • HMAC в новом дизайне. Используйте как минимум HMAC-SHA-256.

Если хотите проверить вывод

Сравните с echo -n "hello" | sha1sum на любой Unix-системе. Хеш для строки hello, это aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d.

Часто задаваемые вопросы

Математически, нет. Для распространенных коротких вводов атакующий с предвычисленным словарем может опознать их мгновенно, поэтому одни хеши не защищают пароли. Для 40-символьной случайной строки практического обращения не существует.

Нет. SHA (Secure Hash Algorithm), это семейство, опубликованное NIST. SHA-1, это 160-битный алгоритм 1995 года. SHA-2, это семейство, включающее SHA-224, SHA-256, SHA-384 и SHA-512.

Ради совместимости с историей более чем за десятилетие. С 2017 года git защищается от коллизий chosen-prefix (SHA-1DC) и поддерживает репозитории SHA-256 для новых проектов.

На нашем сервере. Ваш текст передается по зашифрованному соединению, хешируется стандартной функцией SHA-1, и возвращается 40-символьный дайджест. Мы не храним отправленный вами текст. Поскольку SHA-1 является односторонней функцией, сам дайджест нельзя превратить обратно в ваш ввод.

Сопутствующие инструменты

Генератор SSL-сертификатов

Создайте самоподписанный сертификат SSL/TLS и закрытый ключ RSA полностью в браузере. Свои Common Name, SAN и срок действия, экспорт в PEM.

Генератор ключей PGP

Создайте пару ключей OpenPGP в текстовом формате ASCII и сертификат отзыва с Curve25519, RSA 2048 или RSA 4096.

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

Создавайте хеши MD5, SHA-1, SHA-256, SHA-384, SHA-512 и CRC32 из текста, с готовым для копирования дайджестом для контрольных сумм и сравнений.

Кодировщик и декодировщик Base85

Кодируйте и декодируйте Base85 в варианте Adobe Ascii85, который используется в файлах PostScript и PDF. Компактнее Base64 для двоичных данных.

Конвертер ETH в USD

Переводите Ethereum (ETH) в доллары США по актуальному курсу ETH/USD или по своему курсу. Узнайте, сколько стоит в долларах любое количество ETH.

Идентификатор шифрования

Вставьте зашифрованный текст, и идентификатор предложит вероятные схемы кодирования/шифрования: Base64, hex, двоичный, Морзе, Цезарь или подстановочный, JWT и распространенные хеши.

Инструмент доступен на других языках