#hashing #hash #security #algorithm #sha-3 #standards

rs_sha3_512

rs_sha3_512 是 SHA3-512 加密哈希算法的 Rust 实现,是更大规模的 rs_shield 项目的组成部分。此软件包以独立的方式提供 SHA3-512 哈希功能,非常适合仅需要 SHA3-512 的情况下使用。对于那些寻求全面加密函数集的人来说,此算法也包含在更广泛的 rs_shield 库捆绑包中。 rs_sha3_512 和更大规模项目的重点是性能、安全性和开放性,并承诺持续维护和改进。

3 个版本

0.1.2 2023年6月12日
0.1.1 2023年6月4日
0.1.0 2023年5月30日

#1617 in 加密学

Download history 120/week @ 2024-03-13 34/week @ 2024-03-20 33/week @ 2024-03-27 64/week @ 2024-04-03 159/week @ 2024-04-10 170/week @ 2024-04-17 218/week @ 2024-04-24 317/week @ 2024-05-01 184/week @ 2024-05-08 61/week @ 2024-05-15 135/week @ 2024-05-22 225/week @ 2024-05-29 268/week @ 2024-06-05 183/week @ 2024-06-12 267/week @ 2024-06-19 342/week @ 2024-06-26

1,152 个月下载
4 crates 中使用

GPL-2.0-only

135KB
2.5K SLoC

rs_sha3_512

rs_sha3_512 是实现 SHA-3_512 加密哈希算法的 Rust 包。这种基于置换的哈希算法旨在与 Rust 的 libcore 在 #![no_std] 环境下兼容,使其可以作为独立包用于特定用例,并在 #![no_std]#![no_alloc] 环境中运行,使其适用于无法进行动态内存分配的系统。

此 SHA-3_512 实现符合联邦信息处理标准(FIPS)出版物 202[^1]。根据国家标准与技术研究院(NIST)的指南,SHA-3_512 被推荐用于以下用例

"SHA-3 在 256 位安全级别上提供对预映像、第二预映像和碰撞攻击的安全性 [...]。"

根据此建议,NIST 的建议意味着 SHA-3_512 适用于以下环境

  • 需要 256 位安全性的数字签名。
  • 需要 256 位安全性的系统和协议中的加密哈希函数。
  • 需要 256 位安全性的认证方法。

除了这些具体的建议之外,SHA-3_512 还可能适用于

  • Merkle 树中的数据完整性检查[^4]。
  • 用于生成提交标识符的版本控制系统[^2]。
  • 需要碰撞抵抗的基于哈希的消息认证码(HMACs)[^3]。
  • 作为 Bloom 过滤器中的随机哈希函数[^5]。
  • 密钥派生函数或在生成随机数时[^6]。

鉴于您的整体安全目标和风险承受能力,以下点应仔细考虑。

要访问一系列加密函数,可以使用 rs_sha3_512 作为 rs_shield 库捆绑包的一部分。

如何使用

以下是在您的 Rust 项目中使用 rs_sha3_512crate 的步骤

  1. 请将以下行添加到您的 Cargo.toml 中的 [dependencies] 部分

    rs_sha3_512 = "0.1.*"
    
  2. 使用 rs_sha3_512 模块提供的函数。以下是从字符串创建 SHA-3_512 哈希的示例

    use rs_sha3_512::{HasherContext, Sha3_512Hasher};
    
    let mut sha3_512hasher = Sha3_512Hasher::default();
    sha3_512hasher.write(b"your string here");
    
    let u64result = sha3_512hasher.finish();
    let bytes_result = HasherContext::finish(&mut sha3_512hasher);
    assert_eq!(u64result, 0x8FB6BC7A78EA3DDD);
    assert_eq!(
        format!("{bytes_result:02x}"),
        "8fb6bc7a78ea3ddd267454718826f2b01b373dac4f947a2c7e0e0e27360392a58065e399062d837b53ed0413239d555fc5eac5b8a43c4c37684d1d6d30cb7fa3"
    );
    assert_eq!(
        format!("{bytes_result:02X}"),
        "8FB6BC7A78EA3DDD267454718826F2B01B373DAC4F947A2C7E0E0E27360392A58065E399062D837B53ED0413239D555FC5EAC5B8A43C4C37684D1D6D30CB7FA3"
    );
    assert_eq!(
        bytes_result,
        [
            0x8F, 0xB6, 0xBC, 0x7A, 0x78, 0xEA, 0x3D, 0xDD, 0x26, 0x74, 0x54, 0x71, 0x88, 0x26, 0xF2, 0xB0, 0x1B, 0x37,
            0x3D, 0xAC, 0x4F, 0x94, 0x7A, 0x2C, 0x7E, 0x0E, 0x0E, 0x27, 0x36, 0x03, 0x92, 0xA5, 0x80, 0x65, 0xE3, 0x99,
            0x06, 0x2D, 0x83, 0x7B, 0x53, 0xED, 0x04, 0x13, 0x23, 0x9D, 0x55, 0x5F, 0xC5, 0xEA, 0xC5, 0xB8, 0xA4, 0x3C,
            0x4C, 0x37, 0x68, 0x4D, 0x1D, 0x6D, 0x30, 0xCB, 0x7F, 0xA3
        ]
    )
    

更多信息

有关 rs_sha3_512 的更详细探索、其他可用加密函数的概述以及更广泛的 rs_shield 项目的介绍,请参阅 crates.io 上的 RustyShield 项目页面

贡献

潜在的贡献者被鼓励查阅我们 GitHub 页面上的 贡献指南

许可证

本项目采用 GPL-2.0-only 许可证。

参考

[^1]: 国家标准与技术研究院。 (2015)。 SHA-3 标准:基于置换的哈希和可扩展输出函数。 FIPS PUB 202

[^2]: Linus Torvalds。 (2005)。 Git:一种分布式版本控制系统。 软件:实践与经验,41(1),79-88。 DOI:10.1002/spe.1006

[^3]: Krawczyk, H.,Bellare, M.,& Canetti, R.。 (1997)。 HMAC:基于密钥的哈希消息认证。 RFC 2104

[^4]: Merkle, R. C.。 (1988)。 基于常规加密函数的数字签名。 链接

[^5]: Bloom, B. H.。 (1970)。 允许错误的空间/时间权衡在哈希编码中。 计算机通信杂志,13(7),422-426。 DOI:10.1145/362686.362692

[^6]: 国家标准与技术研究院。 (2012)。 通过提取-扩展方式推导密钥的推荐。 SP 800-56C


注意:以下参考信息是根据 2023 年 5 月 17 日所掌握的最佳知识提供的。

依赖关系