#摘要 #xx-hash #哈希 #fnv #xxh3

noncrypto-digests

为fnv和xxhash等非加密哈希函数实现Digest特质

5个版本

0.3.2 2024年6月19日
0.3.1 2023年12月21日
0.2.3 2023年12月20日
0.1.0 2023年12月8日

加密类别中排名第831

Download history 95/week @ 2024-04-14 49/week @ 2024-04-21 7/week @ 2024-04-28 50/week @ 2024-05-05 66/week @ 2024-05-12 144/week @ 2024-05-19 49/week @ 2024-05-26 83/week @ 2024-06-02 60/week @ 2024-06-09 272/week @ 2024-06-16 107/week @ 2024-06-23 92/week @ 2024-06-30 86/week @ 2024-07-07 50/week @ 2024-07-14 316/week @ 2024-07-21 133/week @ 2024-07-28

每月下载量585
2个crate中使用(通过sqlite-hashes

MIT/Apache

13KB
228

noncrypto-digests

GitHub crates.io version docs.rs docs crates.io version CI build

为fnv和xxhash等非加密哈希函数实现digest::Digest特质。这允许用户以多态方式使用所有加密和非加密哈希函数。

使用方法

use digest::Digest;
use hex::ToHex;
use noncrypto_digests::{Fnv, Xxh3_64, Xxh3_128, Xxh32, Xxh64};

/// This function takes any Digest type, and returns a hex-encoded string.
pub fn hash<T: Digest>(data: impl AsRef<[u8]>) -> String {
    // Note that some hashers provide seed value set to 0 by default.
    // Use `...::from_hasher(hasher)` function to instantiate them.
    let mut hasher = T::new();
    hasher.update(data);
    hasher.finalize().to_vec().encode_hex_upper()
}

assert_eq!(hash::<Fnv>("password"), "4B1A493507B3A318");
assert_eq!(hash::<Xxh3_64>("password"), "336576D7E0E06F9A");
assert_eq!(hash::<Xxh3_128>("password"), "9CFA9055952177DA0B120BE86072A8F0");
assert_eq!(hash::<Xxh32>("password"), "106C6CED");
assert_eq!(hash::<Xxh64>("password"), "90007DAF3980EF1F");

开发

  • 使用justmake的现代替代品)进行开发更为简便。使用cargo install just进行安装。
  • 要获取可用命令列表,运行just
  • 要运行测试,使用just test
  • 在执行git push时,它将运行一些验证,包括cargo fmtcargo clippycargo test。使用git push --no-verify跳过这些检查。

许可

根据以下任一许可授权:

贡献

除非您明确表示,否则任何旨在包含在作品中的有意提交的贡献,根据Apache-2.0许可证定义,应以上述双重许可方式授权,不附加任何额外条款或条件。

依赖关系

~380KB