Что такое SHA-256?
SHA-256 — это одна из криптографических хеш-функций семейства SHA-2, стандартизированных институтом NIST. Она принимает на вход сообщение произвольной длины и выдаёт дайджест фиксированного размера в 256 бит (32 байта), который здесь отображается в виде 64 шестнадцатеричных символов. Одинаковый ввод всегда даёт одинаковый результат, а изменение даже одного символа полностью меняет хеш — это так называемый лавинный эффект. SHA-256 широко применяется в TLS-сертификатах, электронных подписях, блокчейне (Bitcoin) и при проверке целостности файлов.
$$\text{Hash} = \operatorname{SHA\text{-}256}\!\left(\text{Input Text}\right)$$
Как пользоваться калькулятором
Введите или вставьте любой текст в поле ввода и нажмите кнопку. Калькулятор кодирует текст в UTF-8, прогоняет его через алгоритм SHA-256 и возвращает дайджест в шестнадцатеричном виде вместе с длиной ввода в байтах. Пустой ввод тоже допустим — он даёт хорошо известный дайджест пустой строки.
Как устроен алгоритм
SHA-256 дополняет сообщение так, чтобы его длина стала кратной 512 битам, разбивает на блоки по 512 бит и обрабатывает каждый блок за 64 раунда побитовых операций — циклических сдвигов, обычных сдвигов, AND/XOR и сложения по модулю. При этом перемешиваются восемь 32-битных рабочих переменных, изначально заданных дробными частями квадратных корней простых чисел. После каждого блока значения восьми регистров добавляются к текущему состоянию хеша; их объединение и образует итоговый 256-битный дайджест.
Разбор примера
Для ввода abc (3 байта) получается дайджест ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. Пустая строка даёт e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 — это стандартный тестовый вектор.
Частые вопросы
Можно ли обратить SHA-256? Нет. Это односторонняя функция: восстановить исходный текст из дайджеста невозможно.
Почему количество байтов больше, чем число символов? Символы вне ASCII (буквы с диакритикой, эмодзи, иероглифы CJK) занимают в UTF-8 несколько байтов, поэтому длина в байтах может превышать число символов.
Безопасен ли SHA-256 сегодня? Да. На текущий момент против SHA-256 не существует практических атак нахождения коллизий или прообраза, и эта функция по-прежнему рекомендуется для повседневного использования.