web3使用什么哈希加密算法? ethereumjs-util Sha3返回不同的结果

问题描述 投票:0回答:1

我正在尝试通过web3的signPersonalMessage函数正确签署身份验证方法。但是,正确认证的eth-sig-util包不会产生与SHA3-256和Keccak-256相同数据的相同哈希。

例如,如果我尝试哈希:0x664f5f32784d335a69596e4f416c636373496859377054744f704c6e54666a314c70314a4f364d565f4638

我对Keccak256的结果:5dc2751b78fdb82a0986ad2a8e6cc774458d7a096e8eafd3ab6937146b7d2eec

我的结果是SHA3-256:6fa399a29899ebab112d562526b9b735f0cf7ce4bdc5a96edfcc48572b8d3e7b

我的结果与库的Sha3功能:40de9eb1ead6a6299af30cdf51eca39d44be214ce7431c93ff546cf5fb1ef0fb

这是我能想到的唯一问题,在我尝试使用Keccak进行签名和身份验证之前,我经常遇到“不正确的v长度”或“无效签名长度”错误。

javascript hash ethereum web3
1个回答
1
投票

我的猜测是你正在使用web3.js 0.20.x并且无法传递encoding参数。这会将输入视为字符串,这可能不是您想要的:

web3.sha3('0x664f5f32784d335a69596e4f416c636373496859377054744f704c6e54666a314c70314a4f364d565f4638', { encoding: 'hex' })
"0x40de9eb1ead6a6299af30cdf51eca39d44be214ce7431c93ff546cf5fb1ef0fb"
© www.soinside.com 2019 - 2024. All rights reserved.