2个版本

0.1.1 2024年6月6日
0.1.0 2023年6月6日

11#multi-hash 中排名

Download history 27255/week @ 2024-04-20 19329/week @ 2024-04-27 19032/week @ 2024-05-04 24879/week @ 2024-05-11 19933/week @ 2024-05-18 30543/week @ 2024-05-25 25376/week @ 2024-06-01 20336/week @ 2024-06-08 21459/week @ 2024-06-15 14915/week @ 2024-06-22 5203/week @ 2024-06-29 5244/week @ 2024-07-06 4782/week @ 2024-07-13 4537/week @ 2024-07-20 4488/week @ 2024-07-27 3463/week @ 2024-08-03

18,674 每月下载次数
20 个crate中使用(通过 multihash-derive

MIT 许可证

13KB
287

rust-multihash

Build Status Crates.io License Documentation Dependency Status Coverage Status

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 规范

许可证

MIT


lib.rs:

这是一个内部 crate,它实现了实际的 MultihashDigest derive。

multihash-derive crate 作为外观,并定义了 derive 所依赖的附加符号。例如,我们正在 derive 的实际 trait,即 MultihashDigest,以及 Hasher trait 和 UnsupportedCode 错误类型。

依赖项

~3MB
~58K SLoC