4个版本

0.1.3 2024年6月26日
0.1.2 2024年2月23日
0.1.1 2023年10月30日
0.1.0 2023年6月6日

#525 in 密码学

Download history 26344/week @ 2024-04-24 22427/week @ 2024-05-01 18999/week @ 2024-05-08 23650/week @ 2024-05-15 31181/week @ 2024-05-22 30226/week @ 2024-05-29 21644/week @ 2024-06-05 23844/week @ 2024-06-12 20717/week @ 2024-06-19 7969/week @ 2024-06-26 5057/week @ 2024-07-03 5795/week @ 2024-07-10 4863/week @ 2024-07-17 4663/week @ 2024-07-24 4362/week @ 2024-07-31 4388/week @ 2024-08-07

18,936每月下载量
用于 18 个crates (5直接)

MIT许可证

28KB
442

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 使用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,请遵守standard-readme规范。

许可证

MIT


lib.rs:

包含所有电池的multihash代码表。

虽然`multihash`存储库本身只定义了数据结构,但这个存储库通过multihash_derive为几个哈希器定义了一个代码表。尽管这很方便,但依赖此存储库会增加您项目的依赖项足迹。

它仅推荐作为快速入门的解决方案。对于生产环境,您应该定义自己的代码表或仅依赖`multihash`存储库本身。

依赖项

~2.6–4.5MB
~81K SLoC