首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >keccak256如何将可靠智能契约中的值连接起来?

keccak256如何将可靠智能契约中的值连接起来?
EN

Ethereum用户
提问于 2017-03-30 13:39:42
回答 1查看 1.6K关注 0票数 4

我正在开发一个可靠的智能契约,在其中我需要评估两个级联bytes32的散列。我不需要连接bytes32,因为sha3函数支持多个参数,我将它用作:

代码语言:javascript
复制
sha3(first, second);

第一和第二是bytes32。我想知道如何执行连接,以便在本地复制相同的散列结果,或者使用keccak-256散列函数的在线评估器

EN

回答 1

Ethereum用户

回答已采纳

发布于 2017-03-30 14:00:21

这些参数用字节表示,左填充到您传入的数据类型的最大长度的零,然后连在一起,没有任何类型的分隔符。

在Python中,给定两个十六进制编码的bytes32s加上一个名为firstsecond0x,它看起来如下所示:

代码语言:javascript
复制
# keccak, change before upgrading pysha >= 3.10
from sha3 import sha3_256 
from rlp.utils import decode_hex

my_hash = "0x" + sha3_256(
   decode_hex(first[2:].zfill(64)) + 
   decode_hex(second[2:].zfill(64))
).hexdigest()

decode_hex正在将十六进制转换成一个字节数组。

PS -- Solidity和pysha的现代版本,以及您所使用的任何语言中的相关库,现在都有了名为keccakkeccak256的keccak版本,因此对这些版本进行标准化可能更好。

票数 7
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/13741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档