为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪9158850 2021-04-05 12:14:29
我正在尝试通过web3的signPersonalMessage函数正确签署身份验证方法。但是,正确验证eth-sig-util的程序包不会产生与SHA3-256和Keccak-256相同的具有相同数据的散列。例如,如果我尝试哈希: 0x664f5f32784d335a69596e4f416c636373496859377054744f704c6e54666a314c70314a4f364d565f4638我与Keccak256的结果: 5dc2751b78fdb82a0986ad2a8e6cc774458d7a096e8eafd3ab6937146b7d2eec我对SHA3-256的结果: 6fa399a29899ebab112d562526b9b735f0cf7ce4bdc5a96edfcc48572b8d3e7b使用库的Sha3函数得到的结果是: 40de9eb1ead6a6299af30cdf51eca39d44be214ce7431c93ff546cf5fb1ef0fb这是我唯一能想到的问题,在尝试使用Keccak进行签名和身份验证之前,我还经常遇到“错误的v长度”或“无效的签名长度”错误。
查看完整描述

1 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

我的猜测是您使用的是web3.js 0.20.x,但未传递encoding参数。它将输入视为字符串,这可能不是您想要的:

web3.sha3('0x664f5f32784d335a69596e4f416c636373496859377054744f704c6e54666a314c70314a4f364d565f4638', { encoding: 'hex' })"0x40de9eb1ead6a6299af30cdf51eca39d44be214ce7431c93ff546cf5fb1ef0fb"


查看完整回答
反对 回复 2021-04-22
  • 1 回答
  • 0 关注
  • 251 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信