Solidity

為什麼 Solidity sha3 雜湊與其他 sha3 庫生成的不匹配?

  • January 25, 2017

Solidity 有一個名為的函式sha3,我用一個空字元串輸入對其進行了測試。它與其他 sha3 庫產生的不匹配。我看到其他人在 Solidity 中使用相同的函式編寫的合約sha3,它們的雜湊值也不匹配。Javascriptweb3.sha3雜湊也是如此。為什麼?

乙太坊使用 Keccak-256,而不是 SHA-3 FIPS 202 標準。在您正在使用的 sha3 庫中,嘗試尋找使用 Keccak-256 指定的選項。

對於 Python,請參閱 Python中的獲取方法 ID“Keccak 雜湊”

對於 Javascript,這個庫js-sha3 將涉及使用keccak_256函式而不是sha3_256.

keccak_256('');
// c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470

sha3_256('');
// a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a

其他:

keccak_256('The quick brown fox jumps over the lazy dog');
// 4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15

keccak_256('The quick brown fox jumps over the lazy dog.');
// 578951e24efd62a3d63a86f7cd19aaa53c898fe287d2552133220370240b572d

sha3_256('The quick brown fox jumps over the lazy dog');
// 69070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04

sha3_256('The quick brown fox jumps over the lazy dog.');
// a80f839cd4f83f6c3dafc87feae470045e4eb0d366397d5c6ce34ba1739f734d

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