Многие источники ссылаются на использование криптографической хеш-функции «SHA3» в Ethereum, но проект Ethereum начался до того, как был завершен стандарт SHA3, и возникла некоторая путаница/противоречие по поводу окончательных параметров, выбранных для стандарта. Какая конкретно функция на самом деле оказалась у Эфириума? Это то же самое, что и фактический стандарт SHA3, или один из вариантов стандарта? Или это параметризация Keccak , которая не соответствует ни одному из вариантов?
Ethereum использует KECCAK-256 . Следует отметить, что он не соответствует стандарту на основе FIPS-202 (он же SHA-3), который был окончательно доработан в августе 2015 года.
В соответствии с этим NIST изменил заполнение на SHA3-256(M) = KECCAK [512] (M || 01, 256).
Это отличалось от заполнения, предложенного командой Keccak в версии 3 представления Keccak SHA-3 (окончательная, победившая версия) . Разница заключается в дополнительных битах «01», добавленных к сообщению. Теперь люди называют «представленную версию 3» хеширования SHA-3 Keccak «Keccak», а окончательный стандарт NIST SHA-3 — «SHA-3».
С помощью этого онлайн-генератора и онлайн-компилятора Solidity я протестировал разницу между Keccak-256 и SHA3-256. Я хэшировал слово testing с помощью Ethereum и двух алгоритмов хеширования SHA3:
Функция Ethereum SHA3 в Solidity =5f16f4c7f149ac4f9510d9cf8cf384038ad348b3bcdc01915f95de12df9d1b02
Кекчак-256 =5f16f4c7f149ac4f9510d9cf8cf384038ad348b3bcdc01915f95de12df9d1b02
SHA3-256 (стандарт NIST) =7f5979fb78f082e8b1c676635db8795c4ac6faba03525fb708cb5fd68fd40c5e
Чтобы было понятнее, что Ethereum использует KECCAK-256 вместо стандартизированной NIST хэш-функции SHA-3, Solidity 0.4.3 представилаkeccak256
. (Это псевдоним для sha3
, что означает, что он keccak256
дает результаты, идентичные sha3
, но с целью избежать путаницы , особенно для разработчиков, плохо знакомых с Ethereum.) Рекомендуется использовать новый код keccak256
вместо sha3
.
Джефф Коулман
Хадсон Джеймсон
Джефф Коулман
Хадсон Джеймсон
Джефф Коулман
эт
keccak256
появился псевдоним , который можно безопасно использовать в качестве замены дляsha3
.Мэтт Саяр
ФРАГА
Джей Бентли