1

我正在尝试在 Waves dApp 中使用内置函数“ sha256 ”。 https://docs.wavesplatform.com/en/ride/built-in-functions.html

'DataEntry(“sha256_kotobytesto64”,toBase64String(sha256toBytes(“消息到哈希”))))'

但似乎这个函数的结果与主要的开源 sha256 实现不同(https://www.xorbin.com/tools/sha256-hash-calculator):

文本:要散列的消息

骑行: 8apFsPX2cDRo +bm8K5h01PprABoXDQ8TKqWibQDQx+U=

标准:f1aa45b0f5f6703468f9b9bc2b9874d4fa6b001a170d0f132aa5a26d00d0c7e5

如何解决?

4

2 回答 2

2

这些是相同的值,以不同的方式编码。“RIDE”结果是 base-64,“Standart [sic]”结果是十六进制(base-16)。

这是从一种转换为另一种的 Python 代码:

>>> import base64
>>> import binascii
>>> binascii.hexlify(base64.b64decode('8apFsPX2cDRo+bm8K5h01PprABoXDQ8TKqWibQDQx+U='))
b'f1aa45b0f5f6703468f9b9bc2b9874d4fa6b001a170d0f132aa5a26d00d0c7e5'
于 2019-05-02T14:15:47.243 回答
1

base-16 将在不久的将来得到支持

我对waves-crypto lib使用了一些不同的方法

base58encode ( sha256 ( stringToUint8Array (" string "))) 来自客户端

DataEntry("key_string", toBase58String ( sha256 ( toBytes ("string"))))

它将有助于 RIDE for dApps 中任何基于 commit-reveal 的智能合约

于 2019-05-06T11:01:37.943 回答