Генератор хешей SHA-3 и Keccak
Вычисляйте дайджесты SHA3-224/256/384/512, Keccak-256/512 и SHAKE128/256 из текста или hex-байтов прямо в вашем браузере.
Генератор хешей SHA-3 и Keccak работает целиком в вашем браузере. Текст и hex-байты, которые вы хешируете, обрабатываются на вашем устройстве и никогда не загружаются в ArrayKit.
Открыть инструмент хеширования SHA-256 и SHA-1
Об инструменте Генератор хешей SHA-3 и Keccak
Генератор хешей SHA-3 и Keccak вычисляет всё семейство FIPS 202 — SHA3-224, SHA3-256, SHA3-384 и SHA3-512 — плюс исходные Keccak-256 и Keccak-512 и функции с расширяемым выводом SHAKE128/SHAKE256. Введите текст в UTF-8 или переключитесь в режим hex, чтобы хешировать сырые байты, и дайджест в нижнем регистре обновляется по мере набора. Он создан для повседневной путаницы вокруг этих алгоритмов: SHA3-256 и Keccak-256 выглядят одинаково, но различаются одним байтом дополнения, а Ethereum остановился на Keccak-256 до финализации стандарта. Используйте его, чтобы вывести селектор функции Ethereum, проверить результат keccak256 в Solidity, сверить контрольную сумму SHA-3 или выбрать длину вывода SHAKE. Каждый дайджест вычисляется в вашем браузере, поэтому значения, которые вы хешируете, остаются на вашем устройстве.
Возможности
- Охватывает SHA3-224, SHA3-256, SHA3-384 и SHA3-512 из NIST FIPS 202
- Включает исходные Keccak-256 и Keccak-512, используемые в Ethereum
- SHAKE128 и SHAKE256 с выбираемой вами длиной вывода, выровненной по байтам
- Хешируйте текст в UTF-8 или вставляйте сырые hex-байты одним переключателем
- Дайджест обновляется вживую по мере набора и копируется одним щелчком
- Показывает длину дайджеста в битах, чтобы вы подтвердили нужный вариант
- Понятная ошибка, когда у вставленного hex нечётная длина или недопустимые символы
- Работает целиком в вашем браузере — ничего из хешируемого не загружается
Как использовать Генератор хешей SHA-3 и Keccak
- Выберите алгоритм — SHA3-256, Keccak-256, SHAKE256 и другие
- Выберите UTF-8, чтобы хешировать текст, или Hex, чтобы хешировать сырые байты
- Введите или вставьте ввод; дайджест появляется мгновенно
- Для SHAKE задайте длину вывода в битах, затем скопируйте hex-дайджест
Пример
Ввод
algorithm: Keccak-256
input: "" (empty string)
Результат
c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
Хеш Keccak-256 от пустой строки, на который повсюду опирается инструментарий Ethereum.
Частые ошибки и устранение неполадок
- SHA3-256 и Keccak-256 дают разные результаты для одного и того же текста. — Это ожидаемо — они используют разное дополнение. Используйте Keccak-256 для Ethereum и keccak256 в Solidity; используйте SHA3-256 для хеша по стандарту NIST.
- Режим hex сообщает о нечётном числе цифр. — Каждый байт — это два hex-символа, поэтому у ввода должна быть чётная длина. Уберите лишний полубайт или не-hex символ и попробуйте снова.
- Дайджест SHAKE длиннее или короче ожидаемого. — Длина SHAKE задаётся в битах, а не байтах — 256 бит это 64 hex-символа. Убедитесь, что длина — положительное число, кратное 8.
- Дайджест не совпадает с выводом keccak256 в моей Solidity. — Solidity хеширует сырые байты значения, закодированного по ABI. Переключитесь в режим Hex и вставьте именно эти байты, а не читаемый человеком текст.
Часто задаваемые вопросы
- В чём разница между SHA-3 и Keccak-256?
- Они используют одну и ту же губку Keccak, но добавляют разный байт разделения доменов перед дополнением (0x06 для SHA-3, 0x01 для Keccak). Одно это различие делает их дайджесты совершенно разными, поэтому значение, хешированное SHA3-256, никогда не совпадёт с тем же значением, хешированным Keccak-256.
- Почему Ethereum использует Keccak-256 вместо SHA3-256?
- Ethereum принял Keccak-256 из исходной заявки Keccak до того, как NIST финализировал SHA-3 с немного иным дополнением. Чтобы сохранить совместимость, Ethereum и keccak256 в Solidity оставили исходный вариант, поэтому адреса и селекторы функций построены на Keccak-256.
- Что такое SHAKE128 и SHAKE256?
- Это функции с расширяемым выводом (XOF): вместо фиксированного размера вы выбираете, сколько битов дайджеста хотите. 128 и 256 обозначают их уровень стойкости, а не длину вывода, поэтому у любой из них можно запросить 128, 256, 512 или больше битов.
- Как хешировать сырые байты, чтобы совпасть с вызовом keccak256 над данными, закодированными по ABI?
- Переключите ввод на Hex и вставьте байты в шестнадцатеричном виде — необязательный префикс 0x и пробелы допустимы. Инструмент хеширует именно эти байты, а не их текст в UTF-8, что и ожидает keccak256 в Solidity над закодированными данными.
- SHA-3 — это просто более быстрая или более надёжная версия SHA-256?
- Нет. SHA-3 — это совершенно другая конструкция — губка Keccak, а не схема Меркла–Дамгора, лежащая в основе SHA-256, — выбранная как стандартизированная альтернатива. При одинаковом размере дайджеста они дают сопоставимую стойкость к коллизиям, а их выводы полностью различаются, поэтому SHA-3 не является прямой заменой.
- Какую длину вывода выбрать для SHAKE?
- Ориентируйтесь на то, что требует реализуемая вами спецификация. Частое значение по умолчанию — 256 бит для SHAKE128 и 512 бит для SHAKE256, но подойдёт любое положительное число битов, кратное 8 — инструмент подставляет эти значения по умолчанию и позволяет их переопределить.
Связанные инструменты
Все инструменты ArrayKit