Генератор хеша SHA-3 и Keccak
Введите или вставьте текст и выберите алгоритм. Хеш пересчитывается при вводе: семейство SHA-3 по FIPS 202 или Keccak-256 в том виде, в каком Ethereum использует его для адресов и селекторов функций. Текст кодируется в UTF-8 и не покидает браузер.
Работает в браузере: всё, что вы вводите, никуда не отправляется.
Как пользоваться
- Введите или вставьте текст. Учитывается каждый символ, включая пробелы и переводы строк.
- Выберите алгоритм: один из четырёх размеров SHA-3 или Keccak-256 / Keccak-512.
- Скопируйте хеш. Если система, с которой вы сравниваете, пишет заглавными буквами, отметьте Заглавные hex-цифры.
Как устроен SHA-3
SHA-3 — это «губка» над состоянием в 1600 бит. Вход делится на блоки размером rate (136 байт для SHA3-256, 72 байта для SHA3-512); каждый блок складывается по XOR с состоянием, которое затем перемешивается 24 раундами перестановки Keccak-f. После последнего, дополненного блока первые байты состояния и есть хеш.
| Алгоритм |
Длина |
Блок (rate) |
Байт дополнения |
| SHA3-224 |
224 бита, 56 hex |
144 байта |
0x06 |
| SHA3-256 |
256 бит, 64 hex |
136 байт |
0x06 |
| SHA3-384 |
384 бита, 96 hex |
104 байта |
0x06 |
| SHA3-512 |
512 бит, 128 hex |
72 байта |
0x06 |
| Keccak-256 |
256 бит, 64 hex |
136 байт |
0x01 |
Пример
Текст abc:
- SHA3-256: 3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532
- Keccak-256: 4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45
Вход тот же, перестановка та же, дополнение разное — и у хешей нет ничего общего.
Советы
- Следите за переводом строки в конце. Текст, скопированный из терминала, часто заканчивается переводом строки, и хеш получается совсем другим.
- Селекторы функций Ethereum — первые 4 байта (8 hex-знаков) Keccak-256 от сигнатуры, например transfer(address,uint256).
- Для паролей нужен специальный хеш — bcrypt, scrypt или Argon2, а не быстрый SHA-3.
Частые вопросы
Чем SHA-3 отличается от Keccak-256?
Оба используют одну и ту же перестановку Keccak и конструкцию «губки». В SHA-3, утверждённом в стандарте FIPS 202 в 2015 году, изменён только байт дополнения (0x06 вместо 0x01). Этого достаточно, чтобы результаты были совсем разными: SHA3-256 и Keccak-256 одного текста никогда не совпадают.
Какой из них использует Ethereum?
Ethereum использует исходный Keccak-256 — в Solidity он называется keccak256. Его выбрали до окончательного утверждения SHA-3. Чтобы получить хеш как в Ethereum, выберите Keccak-256; например, для пустой строки это c5d24601…a470.
SHA-3 лучше, чем SHA-256?
Оба считаются стойкими. Внутреннее устройство SHA-3 отличается от SHA-2, поэтому слабость, найденная в одном, не переносится на другой автоматически. SHA-256 распространён и поддерживается шире, а SHA-3 по устройству устойчив к атаке удлинением сообщения.
Почему мой хеш не совпадает с другим сервисом?
Проверьте три вещи: алгоритм (SHA3-256 или Keccak-256), невидимые символы вроде перевода строки или пробела в конце и кодировку. Этот инструмент хеширует ровно те символы, что в поле, в кодировке UTF-8; кириллица в UTF-8 занимает по два байта на букву, поэтому хеш в кодировке Windows-1251 будет другим.
Текст куда-то отправляется?
Нет. Хеш считается в браузере встроенной реализацией перестановки Keccak, на сервер ничего не уходит.