#hasher #hash #faster #multiplication #portable #passed #fastest

no-std museair

新的最快便携式哈希:免受盲乘法影响,甚至比wyhash更快,SMHasher3通过

1个不稳定版本

0.2.0 2024年8月14日

#926 in 算法

44 每月下载量

MIT/Apache

47KB
653

这是新的最快便携式哈希:免受盲乘法影响,甚至比wyhash更快,SMHasher3通过。

请参阅仓库获取详细信息。

使用方法

let seed: u64 = 42;

let one_shot = museair::hash_128("MuseAir hash!".as_bytes(), seed);
let streamed = {
    let mut hasher = museair::Hasher::with_seed(seed);
    hasher.write("MuseAir".as_bytes());
    hasher.write(" hash!".as_bytes());
    hasher.finish_128()
};

assert_eq!(one_shot, streamed);

基准测试

哈希 摘要长度 吞吐量
MuseAir 64位 29.1 GiB/s (0.88)
MuseAir-128 128位 29.0 GiB/s (0.88)
MuseAir-BFast 64位 33.0 GiB/s (1.00)
MuseAir-BFast-128 128位 33.0 GiB/s (1.00)
WyHash 64位 29.0 GiB/s (0.88)
WyHash-condom 64位 24.3 GiB/s (0.74)
KomiHash 64位 27.7 GiB/s (0.84)

(这些结果是通过在AMD Ryzen 7 5700G 4.6GHz台式机上运行 cargo bench 获得的。)

安全性

MuseAir 旨在提供加密安全性。

  • 为了抵御HashDoS,您的哈希必须包含一个私有种子。
  • 为确保数据保护,建议使用SHA-3等成熟算法。

版本策略

-Standard 变体(在crate根目录中列出的函数)将在1.0.0版本发布之前不计划稳定。也就是说,哈希的结果可能会从次要版本到次要版本发生变化。请勿用于持久化存储。

-BFast 变体永远不会稳定,您应该仅在本地会话中使用它。对于持久化存储,您应该始终使用 -Standard 变体(在它稳定后)。

无运行时依赖