Перейти к содержимому
Toova
Все инструменты

Хеш Keccak-256

Приватность по умолчанию — работает полностью в вашем браузере

Положите любую UTF-8 строку в поле ввода и получите 32-байтовый digest Keccak-256. Тот же алгоритм Ethereum использует повсеместно: контрольные суммы EIP-55, селекторы функций, вывод storage-слотов и адреса контрактов через CREATE2.

Keccak-256 против SHA3-256

Keccak-256 был заявкой Keccak в NIST до того, как он стал SHA3. Финальный стандарт SHA3 изменил правило padding (multi-rate padding получил два дополнительных бита), поэтому SHA3-256 и Keccak-256 одного входа отличаются. Ethereum оставил оригинальный Keccak, чтобы on-chain хеши совпадали с реализациями кошельков, индексаторов и эксплореров, которые также используют Keccak-256.

Где Ethereum его применяет

Селекторы функций — это первые 4 байта keccak256("transfer(address,uint256)") и аналогичных канонических сигнатур. Storage-слоты для маппингов выводятся из keccak256(abi.encode(key, slot)). EIP-55 чередует регистры исходя из keccak256 адреса в нижнем регистре. Адреса контрактов CREATE2 — keccak256 над deployer, salt и bytecode.

Как работает реализация

Страница везёт компактную перестановку Keccak-f[1600] на JavaScript. Web Crypto её не предоставляет. Проверить можно, сравнив с известным digest пустой строки c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470. Ввод и вывод не покидают вкладку.

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

Keccak-256 — это то же, что SHA3-256?
Нет. Keccak-256 — то, что Keccak отправил в NIST; SHA3-256 добавил два бита padding перед финализацией. Один вход — разный результат. Ethereum и EVM используют исходный Keccak-256.
Где он встречается в Ethereum?
В селекторах функций, выводе storage-слотов, контрольных суммах EIP-55, детерминированных адресах CREATE2 и большинстве схем подписей с 256-битным digest.
Как проверить реализацию?
Похешируйте пустую строку и сравните с c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470. Любая разница означает неверный padding или алгоритм.
Вывод детерминирован для одного и того же входа?
Да. Keccak-256 — чистая функция. Одна и та же UTF-8 последовательность всегда даёт один и тот же digest, в любом браузере и сессии.
Toova сохраняет мой ввод?
Нет. Хеш считается локально в этой вкладке. Строка и digest никуда не уходят.
Можно ли использовать это для ABI?
Возьмите Keccak-256 от канонической сигнатуры функции, например transfer(address,uint256) — именно такой 4-байтовый префикс ожидают селекторы — и заберите первые 4 байта результата.