gpt4 book ai didi

rust - 如何从Substrate中的Polkadot.js实现blake2AsHex功能?

转载 作者:行者123 更新时间:2023-12-03 11:45:53 25 4
gpt4 key购买 nike

我想在Rust中使用blake2AsHex类型的功能。此函数exists在javascript中,但我正在寻找rust中的相应函数。到目前为止,使用Substrate的原语是:

pub fn blake2_256(data: &[u8]) -> [u8; 32]
// Do a Blake2 256-bit hash and return result.

我得到了不同的值(value)。

当我在控制台中执行此操作时:
util_crypto.blake2AsHex("0x0000000000000000000000000000000000000000000000000000000000000001")


我得到所需的值: 0x33e423980c9b37d048bd5fadbd4a2aeb95146922045405accc2f468d0ef96988。但是,当我执行此rust代码时:
let res = hex::encode(&blake2_256("0x0000000000000000000000000000000000000000000000000000000000000001".as_bytes()));
println!("File Hash encoding: {:?}", res);

我得到一个不同的值:
47016246ca22488cf19f5e2e274124494d272c69150c3db5f091c9306b6223fc

因此,如何在Rust中实现 blake2AsHex

最佳答案

同样,您在此处遇到数据类型的问题。

"0x0000000000000000000000000000000000000000000000000000000000000001".as_bytes()

正在将大字符串转换为字节,而不是十六进制表示形式。

您需要正确创建要表示的字节数组,然后它应该起作用。

您已经在使用 hex::encode将字节转换为十六进制字符串了...您应该在使用 hex::decode将十六进制字符串转换为字节了:

https://docs.rs/hex/0.3.1/hex/fn.decode.html

Decodes a hex string into raw bytes.

关于rust - 如何从Substrate中的Polkadot.js实现blake2AsHex功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60792643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com