Sha3

keccak256 和 sha3 是否重現相同的雜湊?

  • May 18, 2018

我有這個堅固的方法:

function hashData(bytes32 data) public constant returns (bytes32) {
   var hash = keccak256(data, msg.sender);
   return hash;
 }

對於數據 = “0x707974686f6e62”和地址 = “0x4c5f885b9854ce17e5620098e53f3032be002fed”

我沒有得到相同的結果使用 web3.sha3(data,address)

Solidity中,sha3keccak256是別名,所以它們的輸出是相同的。

web3.sha3是不同程式語言中的不同函式(我假設是 JavaScript)。您可能會發現web3.utils.soliditySha3很有幫助,因為它再現了 Solidity 所做的打包。

如果您不使用 web3.js 1.0,ethereumjs-abi也有類似的功能。

嘗試使用 web3 1.0 並web3.utils.soliditySha3以與 Solidity 相同的方式執行 sha3/keccak256。

將以與solidity相同的方式計算給定輸入參數的sha3。這意味著參數將在散列之前進行 ABI 轉換和緊密打包。

更多資訊

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