Генератор хеша SHA-256

Вычисляйте хеш SHA-256 текста, hex-байтов или любого файла с помощью Web Crypto API прямо в браузере. Чтобы проверить скачанный файл, вставьте опубликованную контрольную сумму в поле «Сравнить с».

Все алгоритмы

Работает полностью в браузере. Данные никуда не загружаются.

Как пользоваться

  1. Введите или вставьте текст, переключите формат ввода на «Hex», чтобы ввести байты, или откройте файл, который нужно проверить.
  2. Оставьте выбранным SHA-256 и укажите формат вывода: «hex (нижний регистр)», «HEX (верхний регистр)» или «Base64».
  3. Вставьте контрольную сумму со страницы загрузки в поле «Сравнить с». «Совпадает» означает, что файл идентичен.
  4. Скопируйте результат или возьмите SHA-384, SHA-512 либо другой хеш из таблицы «Все алгоритмы».

Что такое SHA-256?

SHA-256 — самый распространённый представитель семейства SHA-2. Его разработало АНБ, а NIST стандартизировал в 2002 году в FIPS 180-2. Сегодня он описан в FIPS 180-4, а RFC 6234 приводит те же алгоритмы с эталонным кодом. SHA-256 обрабатывает блоки по 512 бит за 64 раунда 32-битной арифметики и выдаёт 256-битный хеш: 64 шестнадцатеричных символа или 44 символа Base64. Практические атаки для поиска коллизий или прообразов неизвестны, и SHA-256 используется по умолчанию для:

  • сертификатов и рукопожатий TLS, а также подписи кода;
  • Bitcoin, где SHA-256 применяется дважды для хешей блоков, доказательства работы и идентификаторов транзакций (контрольная сумма в адресах Base58Check берётся из того же двойного хеша);
  • файлов контрольных сумм вроде SHA256SUMS, хешей образов контейнеров (sha256:...) и Subresource Integrity.

Проверка скачанного файла

Откройте скачанный файл и вставьте контрольную сумму от издателя в поле «Сравнить с». Регистр букв не важен, подойдёт и значение в Base64. «Совпадает» означает, что файл байт в байт совпадает с тем, по которому рассчитана контрольная сумма. Это не доказывает, кто его создал, поэтому берите контрольную сумму с HTTPS-сайта издателя или из подписанного файла SHA256SUMS, а не с зеркала, с которого вы скачали файл.

Для текста хеш вычисляется от байтов, а не от символов. Окончания строк Windows (CRLF), метка порядка байтов или UTF-16 вместо UTF-8 — каждое из этих отличий даёт совершенно другой SHA-256. Используйте параметр «Кодировка текста» или ввод в hex, чтобы хешировать ровно те байты, которые хешировала другая система.

Атака удлинением сообщения и пароли

Как и MD5, SHA-1 и SHA-512, SHA-256 уязвим к атаке удлинением сообщения: зная SHA-256(secret + message) и длину секрета, злоумышленник может, не зная самого секрета, вычислить корректный хеш для этого сообщения, за которым следуют дополнение и данные по его выбору. Чтобы подписывать или аутентифицировать данные с помощью ключа, используйте HMAC-SHA256 в генераторе HMAC, а не хешируйте ключ вместе с сообщением.

Из-за высокой скорости простой SHA-256 не подходит и для хранения паролей: любой, кто получит хеши, сможет проверять варианты так быстро, как его видеокарты вычисляют SHA-256, а одинаковые пароли дают одинаковые хеши. Используйте Argon2id, scrypt, bcrypt или PBKDF2-HMAC-SHA256 с большим числом итераций: все они добавляют соль.

SHA-256 в командной строке и в коде

$ printf 'abc' | sha256sum
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad  -

sha256sum -c SHA256SUMS                  # Linux: проверить список файлов
shasum -a 256 file.iso                   # macOS
certutil -hashfile file.iso SHA256       # Windows
Get-FileHash file.iso                    # PowerShell (SHA256 по умолчанию)

# Python
hashlib.sha256(data).hexdigest()

// Node.js
crypto.createHash('sha256').update(data).digest('hex')

Значение для abc — тестовый вектор из стандарта; введите abc в поле выше, чтобы увидеть тот же результат. Таблица «Все алгоритмы» также показывает для ваших данных значения SHA-384, SHA-512, SHA-1, MD5 и CRC.

Примеры

Исходные данные (UTF-8)SHA-256
Hello, World!dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
Base64.is63f2f446bc11a1f96175c0f77bdac08ca1b184ba42c3a42c34ddcbce00b1b800
你好670d9743542cae3ea7ebe36af56bd53648b0a1126162e78d81a32934a711302e

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

Можно ли расшифровать SHA-256?

Нет. SHA-256 — односторонняя хеш-функция, а не шифрование. Онлайн-«дешифраторы» лишь ищут хеши в таблицах известных входных данных, поэтому находят распространённые пароли и короткие строки, но ничего длинного или случайного.

Почему мой SHA-256 не совпадает с опубликованной контрольной суммой?

Чаще всего файл скачан не полностью или это другая версия, либо вы хешировали имя файла вместо самого файла. Загрузите сам файл кнопкой «Открыть файл». Также убедитесь, что оба значения получены одним и тем же алгоритмом: hex-значение из 128 символов получено 512-битной хеш-функцией, например SHA-512, а не SHA-256.

Как получить хеш SHA-256 в Base64?
Выберите «Base64» в параметре «Формат вывода». В таком виде хеш используют Subresource Integrity (значения sha256-, хотя чаще встречается sha384-) и HTTP-заголовок Content-Digest. Hex и Base64 содержат одни и те же 32 байта; преобразовать одно в другое можно с помощью инструмента Base64 в Hex.
SHA-256 и SHA-2 — это одно и то же?

SHA-2 — это семейство: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 и SHA-512/256. SHA-256 — самый распространённый его представитель. SHA-3 (FIPS 202) — отдельная конструкция на основе Keccak, которая даёт другие результаты.

Какой длины хеш SHA-256?
32 байта: 64 hex-символа или 44 символа Base64 с = на конце. Такую же длину имеют SHA3-256 и BLAKE2s; определитель типа хеша перечислит подобные варианты для неизвестного хеша.