Solidity
為什麼 Solidity sha3 雜湊與其他 sha3 庫生成的不匹配?
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