Cryptography

乙太坊使用哪種加密雜湊函式?

  • July 27, 2019

許多消息來源提到在乙太坊中使用“SHA3”加密雜湊函式,但乙太坊項目在 SHA3 標準最終確定之前就開始了,圍繞標準選擇的最終參數 存在一些混淆/爭議。乙太坊實際上最終實現了哪個功能? 它與實際的 SHA3 標準相同,還是標準中的變體之一?或者它是與任何變體都不匹配的Keccak參數化?

乙太坊使用KECCAK-256。應該注意的是,它不遵循基於FIPS-202的標準(又名 SHA-3),該標準於 2015 年 8 月完成。

據此,NIST 將 padding 更改為ThisSHA3-256(M) = KECCAK [512] (M || 01, 256). is different from the Keccak team 在The Keccak SHA-3 submission version 3 (final, wins version)中提出的 padding 。不同之處在於附加到消息的附加“01”位。人們現在稱“送出的版本 3”SHA-3 Keccak 散列“Keccak”和最終確定的 NIST SHA-3 標準“SHA-3”。

使用這個線上生成器Solidity Online Compiler,我測試了 Keccak-256 和 SHA3-256 之間的區別。我使用乙太坊和 2 種 SHA3 雜湊算法對測試一詞進行了雜湊處理:

Solidity 中的乙太坊 SHA3 函式=5f16f4c7f149ac4f9510d9cf8cf384038ad348b3bcdc01915f95de12df9d1b02

凱卡克-256 =5f16f4c7f149ac4f9510d9cf8cf384038ad348b3bcdc01915f95de12df9d1b02

SHA3​​-256(NIST 標準) =7f5979fb78f082e8b1c676635db8795c4ac6faba03525fb708cb5fd68fd40c5e

引用自:https://ethereum.stackexchange.com/questions/550