2个版本
0.1.1 | 2024年6月6日 |
---|---|
0.1.0 | 2023年6月6日 |
11 在 #multi-hash 中排名
18,674 每月下载次数
在 20 个crate中使用(通过 multihash-derive)
13KB
287 行
rust-multihash
multihash 在Rust中的实现。
目录
安装
首先将以下内容添加到您的 Cargo.toml
[dependencies]
multihash = "*"
然后运行 cargo build
。
MSRV
此库支持的最小Rust版本为 1.64.0
。这仅在没有激活其他功能的情况下保证。
使用
multihash
crate公开了编码和解码multihash的基本数据结构。它本身不提供任何哈希功能。Multihash
使用const-generics来定义内部缓冲区大小。您应该将其设置为要支持的摘要的最大大小。
use multihash::Multihash;
const SHA2_256: u64 = 0x12;
fn main() {
let hash = Multihash::<64>::wrap(SHA2_256, b"my digest");
println!("{:?}", hash);
}
使用自定义代码表
您可以使用multihash-derive
crate推导出您自己的特定应用代码表。如果您不想自己实现,multihash-codetable
提供了预定义的哈希器实现。
use multihash_derive::MultihashDigest;
#[derive(Clone, Copy, Debug, Eq, MultihashDigest, PartialEq)]
#[mh(alloc_size = 64)]
pub enum Code {
#[mh(code = 0x01, hasher = multihash_codetable::Sha2_256)]
Foo,
#[mh(code = 0x02, hasher = multihash_codetable::Sha2_512)]
Bar,
}
fn main() {
let hash = Code::Foo.digest(b"my hash");
println!("{:02x?}", hash);
}
支持的哈希类型
SHA1
SHA2-256
SHA2-512
SHA3
/Keccak
Blake2b-256
/Blake2b-512
/Blake2s-128
/Blake2s-256
Blake3
Strobe
维护者
船长:@dignifiedquire。
贡献
欢迎贡献力量。请查看问题。
请参阅我们的贡献文档,了解我们的工作方式以及一般性的贡献信息。请注意,与 multiformats 相关的所有互动均受 IPFS 行为准则的约束。
小贴士:如果编辑 README,请遵守标准 README 规范。
许可证
lib.rs
:
这是一个内部 crate,它实现了实际的 MultihashDigest
derive。
multihash-derive
crate 作为外观,并定义了 derive 所依赖的附加符号。例如,我们正在 derive 的实际 trait,即 MultihashDigest
,以及 Hasher
trait 和 UnsupportedCode
错误类型。
依赖项
~3MB
~58K SLoC