Viele Quellen beziehen sich auf die Verwendung der kryptografischen Hash-Funktion „SHA3“ innerhalb von Ethereum, aber das Ethereum-Projekt begann, bevor der SHA3-Standard fertiggestellt wurde, und es gab einige Verwirrung/Kontroversen um die endgültigen Parameter, die für den Standard ausgewählt wurden. Welche Funktion hat Ethereum eigentlich am Ende? Ist es derselbe wie der eigentliche SHA3-Standard oder eine der Varianten innerhalb des Standards? Oder ist es eine Parametrisierung von Keccak , die zu keiner der Varianten passt?
Ethereum verwendet KECCAK-256 . Es sollte beachtet werden, dass es nicht dem FIPS-202- basierten Standard (auch bekannt als SHA-3) folgt, der im August 2015 fertiggestellt wurde.
Dementsprechend änderte NIST die Polsterung in This wasSHA3-256(M) = KECCAK [512] (M || 01, 256).
different from the padding, das vom Keccak-Team in The Keccak SHA-3 Submission Version 3 (endgültige, siegreiche Version) vorgeschlagen wurde . Der Unterschied besteht in den zusätzlichen '01'-Bits, die an die Nachricht angehängt werden. Die Leute nennen jetzt die „eingereichte Version 3“ SHA-3 Keccak Hashing „Keccak“ und den finalisierten NIST SHA-3 Standard „SHA-3“.
Mit diesem Online-Generator und dem Solidity Online Compiler habe ich den Unterschied zwischen Keccak-256 und SHA3-256 getestet. Ich habe das Wort Testing mit Ethereum und den 2 SHA3-Hashing-Algorithmen gehasht:
Ethereum SHA3-Funktion in Solidity =5f16f4c7f149ac4f9510d9cf8cf384038ad348b3bcdc01915f95de12df9d1b02
Keccak-256 =5f16f4c7f149ac4f9510d9cf8cf384038ad348b3bcdc01915f95de12df9d1b02
SHA3-256 (NIST-Standard) =7f5979fb78f082e8b1c676635db8795c4ac6faba03525fb708cb5fd68fd40c5e
Um deutlicher zu machen, dass Ethereum KECCAK-256 anstelle der NIST-standardisierten SHA-3-Hash-Funktion verwendet, hat Solidity 0.4.3 eingeführtkeccak256
. (Es ist ein Alias für sha3
, was bedeutet, dass keccak256
identische Ergebnisse wie erzeugt werden sha3
, aber mit der Absicht, Verwirrung zu vermeiden , insbesondere für Entwickler, die neu bei Ethereum sind.) Es wird empfohlen, neuen Code keccak256
anstelle von zu verwenden sha3
.
Jeff Colemann
Hudson Jameson
Jeff Colemann
Hudson Jameson
Jeff Colemann
eth
keccak256
einen Alias eingeführt, der bedenkenlos als Ersatz für verwendet werden kannsha3
.MattSayar
FRAGA
JBentley