sha256 returns 奇怪的 44 个符号散列(不是通常的 64 个)

sha256 returns strange 44 symbols hash (not 64 as usual)

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

'DataEntry("sha256_kotobytesto64", toBase64String(sha256(toBytes("Message to hash"))))'

但是这个函数的结果好像和主要的开源sha256实现不一样(https://www.xorbin.com/tools/sha256-hash-calculator):

文本:要散列的消息

骑行:8apFsPX2cDRo+bm8K5h01PprABoXDQ8TKqWibQDQx+U=

标准:f1aa45b0f5f6703468f9b9bc2b9874d4fa6b001a170d0f132aa5a26d00d0c7e5

如何解决?

它们是相同的值,但编码方式不同。 "RIDE" 结果为 base-64,"Standart [sic]" 结果为十六进制(base-16)。

这里是 Python 代码,用于将一种代码转换为另一种代码:

>>> import base64
>>> import binascii
>>> binascii.hexlify(base64.b64decode('8apFsPX2cDRo+bm8K5h01PprABoXDQ8TKqWibQDQx+U='))
b'f1aa45b0f5f6703468f9b9bc2b9874d4fa6b001a170d0f132aa5a26d00d0c7e5'

不久将支持base-16

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

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

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

它将帮助 RIDE for dApps 中任何基于提交披露的智能合约