Welche kryptografische Hash-Funktion verwendet Ethereum?

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?

Antworten (2)

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

Aus Gründen der Klarheit sollten wir es meiner Meinung nach "Keccak-256" nennen und nicht alles, was ausdrücklich "SHA3" enthält.
Du bist nicht alleine. Siehe diese EIP .
lol, ja, das ist mir bekannt. Aber ich meinte eigentlich hier in der Antwort, damit wir die Leser nicht verwirren.
Gute Idee @ Jeff. Ich habe den Wortlaut geändert.
Oh, und übrigens eine ausgezeichnete Antwort. Alle, die dies lesen, stimmen bitte dieser Antwort zu. Es ist ein ideales Beispiel für die Art von Antworten, die wir auf dieser Seite haben möchten!!
Solidity 0.4.3 hatkeccak256 einen Alias ​​eingeführt, der bedenkenlos als Ersatz für verwendet werden kann sha3.
Wie spricht man "keccak" aus?
@MattSayar [kɛtʃak], wie „ketchak“, wie hier zu sehen: quora.com/Cryptography-How-should-you-pronounce-Keccak
Der Link zu keccak-256 in Ihrer ersten Zeile ist defekt. Es leitet zu einem Nachrichtenarchiv weiter. Haben Sie einen aktualisierten Link zum Algorithmus?

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 keccak256identische 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 keccak256anstelle von zu verwenden sha3.