Хэш SHA3-256 онлайн — калькулятор и разбор алгоритма | lavarden.ru
Войти

Хэш SHA3-256 онлайн

Победитель конкурса NIST 2012 года — построен на губчатой конструкции Keccak, принципиально иначе, чем SHA-2. Считается прямо в браузере — текст никуда не отправляется.

Вычислить SHA3-256

Результат пересчитывается сам, пока вы печатаете. В режиме «По строкам» пустые строки тоже хэшируются — результат всегда совпадает по числу строк со входом. Нужна другая функция — на полной странице калькулятора их 32.

История SHA3-256

К середине 2000-х, после того как для SHA-1 нашли практические слабости, у криптографов возникло беспокойство: SHA-1 и SHA-2 построены по одной и той же схеме (Меркла — Дамгора), и в теории удачная атака на одну могла подсказать способ атаковать и другую. NIST решил подстраховаться и в 2007 году объявил открытый конкурс на новый стандарт хэширования — по образцу конкурса, на котором раньше выбрали AES.

Из 64 присланных алгоритмов в 2012 году победил Keccak — разработка бельгийской команды Гвидо Бертони, Йоана Даймена, Микаэля Петерса и Жиля Ван Ассча. Ключевым аргументом жюри была не скорость (Keccak не самый быстрый из финалистов), а то, что он устроен принципиально иначе, чем SHA-2, — на случай, если у конструкции Меркла — Дамгора когда-нибудь найдут фундаментальный изъян. Стандартизирован как SHA-3 в документе FIPS 202 в 2015 году.

Как устроен алгоритм

SHA-3 использует не конструкцию Меркла — Дамгора, а губчатую конструкцию (sponge construction) — и в этом его принципиальное отличие от MD5/SHA-1/SHA-2. Внутреннее состояние — массив из 1600 бит, разделённый на две части: rate (та часть, куда «впитывается» сообщение и откуда «выжимается» результат) и capacity (запас стойкости, который никогда напрямую не взаимодействует с данными — именно его размер и определяет криптографическую надёжность). Для SHA3-256 rate = 1088 бит, capacity = 512 бит.

Работа идёт в две фазы. Впитывание (absorb): сообщение дополняется особым паддингом и режется на блоки по 1088 бит; каждый блок через XOR накладывается на rate-часть состояния, после чего применяется перестановка Keccak-f[1600] — 24 раунда из пяти шагов (θ, ρ, π, χ, ι — вращения, перестановки строк/столбцов и нелинейное преобразование), перемешивающих весь массив целиком, включая capacity. Выжимание (squeeze): из rate-части состояния читаются первые 256 бит — этого хватает для SHA3-256 за один проход, для более длинного вывода потребовалось бы чередовать чтение с ещё одной перестановкой.

ВПИТЫВАНИЕ (ABSORB) ВЫЖИМАНИЕ rate capacity блок 1 Keccak-f 24 раунда блок 2 Keccak-f 24 раунда SHA3-256 256 бит XOR блока в rate, затем перестановка всего состояния первые 256 бит rate-части — и есть хэш
Capacity (серая полоса) не взаимодействует с данными напрямую — в этом источник стойкости губки

Характеристики

ПараметрЗначение
Длина хэша256 бит (64 hex-символа)
Внутреннее состояние1600 бит (rate 1088 + capacity 512)
ПерестановкаKeccak-f[1600], 24 раунда
КонструкцияГубчатая (sponge), не Меркла — Дамгора
Опубликован2015, FIPS 202; Keccak выбран в 2012
АвторыBertoni, Daemen, Peeters, Van Assche

Где применяется

💡

Не путайте с Keccak-256 — это оригинальная версия алгоритма-победителя конкурса, до финальной правки паддинга NIST. Из-за этой правки Keccak-256 и SHA3-256 дают на одной и той же строке разный результат. Именно Keccak-256 (а не SHA3-256) используют Ethereum и многие блокчейны.

Криптостойкость

SHA3-256 не взломан и с момента стандартизации не показал никаких структурных слабостей — губчатая конструкция как раз и вводилась, чтобы иметь алгоритм, принципиально не похожий на SHA-2, на случай будущих прорывов в криптоанализе конструкции Меркла — Дамгора. На практике сегодня и SHA-2, и SHA-3 считаются одинаково надёжными; выбор между ними чаще определяется требованиями стандарта или скоростью на конкретной платформе, а не соображениями стойкости.

Пример

СтрокаHello, world!
SHA3-256f345a219da005ebe9c1a1eaad97bbf38a10c8473e41d0af7fb617caa0c6aa722
Пустая строкаa7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a