#hashing #hash #security #algorithm #standalone #sha3-384

rs_sha3_384

rs_sha3_384 是 SHA3-384 加密散列算法的 Rust 实现,是更大型的 rs_shield 项目的一部分。此软件包以独立的方式提供 SHA3-384 散列功能,非常适合仅需要 SHA3-384 的情况。对于那些寻求一套全面的加密函数的人来说,此算法同样包含在更广泛的 rs_shield 库捆绑包中。rs_sha3_384 和更大项目的主要关注点是性能、安全性和开放性,并承诺持续维护和改进。

3 个版本

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

#1447 in 加密学

Download history 124/week @ 2024-03-13 30/week @ 2024-03-20 30/week @ 2024-03-27 62/week @ 2024-04-03 161/week @ 2024-04-10 169/week @ 2024-04-17 219/week @ 2024-04-24 317/week @ 2024-05-01 182/week @ 2024-05-08 61/week @ 2024-05-15 129/week @ 2024-05-22 221/week @ 2024-05-29 265/week @ 2024-06-05 180/week @ 2024-06-12 264/week @ 2024-06-19 332/week @ 2024-06-26

1,132 个月下载量
用于 3 crates

GPL-2.0-only

135KB
2.5K SLoC

rs_sha3_384

rs_sha3_384 是一个实现 SHA-3_384 加密散列算法的 Rust 包。此基于置换的散列算法旨在与 Rust 的 libcore 兼容,在 #![no_std] 上下文中运行,允许它作为独立包用于特定用例,并在 #![no_std]#![no_alloc] 环境中运行,使其适用于动态内存分配不可行的系统。

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

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

基于此建议,NIST 的建议意味着 SHA-3_384 适用于以下环境

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

除了这些特定的建议之外,SHA-3_384 还可能适用于

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

在考虑您的整体安全目标和风险承受能力时,应仔细考虑这些要点。

要访问全面的加密函数,可以使用 rs_sha3_384 作为 rs_shield 库包的一部分。

如何使用

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

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

    rs_sha3_384 = "0.1.*"
    
  2. 在您的代码中使用 rs_sha3_384 模块提供的函数。以下是从字符串创建 SHA-3_384 哈希的示例

    use rs_sha3_384::{HasherContext, Sha3_384Hasher};
    
    let mut sha3_384hasher = Sha3_384Hasher::default();
    sha3_384hasher.write(b"your string here");
    
    let u64result = sha3_384hasher.finish();
    let bytes_result = HasherContext::finish(&mut sha3_384hasher);
    assert_eq!(u64result, 0x75FD44A90B9A3689);
    assert_eq!(
        format!("{bytes_result:02x}"),
        "75fd44a90b9a3689f55dd3d09006bf31f8443752cc662a277914c32e772aa33431d306f4b174ccaf3abdb7eff384063d"
    );
    assert_eq!(
        format!("{bytes_result:02X}"),
        "75FD44A90B9A3689F55DD3D09006BF31F8443752CC662A277914C32E772AA33431D306F4B174CCAF3ABDB7EFF384063D"
    );
    assert_eq!(
        bytes_result,
        [
            0x75, 0xFD, 0x44, 0xA9, 0x0B, 0x9A, 0x36, 0x89, 0xF5, 0x5D, 0xD3, 0xD0, 0x90, 0x06, 0xBF, 0x31, 0xF8, 0x44,
            0x37, 0x52, 0xCC, 0x66, 0x2A, 0x27, 0x79, 0x14, 0xC3, 0x2E, 0x77, 0x2A, 0xA3, 0x34, 0x31, 0xD3, 0x06, 0xF4,
            0xB1, 0x74, 0xCC, 0xAF, 0x3A, 0xBD, 0xB7, 0xEF, 0xF3, 0x84, 0x06, 0x3D
        ]
    )
    

更多信息

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

贡献

潜在的贡献者被鼓励查阅我们 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). 基于 conventional 加密函数的数字签名. 链接

[^5]: Bloom, B. H. (1970). 允许错误的空间/时间权衡在哈希编码中. Communications of the ACM,13(7),422-426. DOI:10.1145/362686.362692

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


注意:参考文献是根据截至 2023 年 5 月 17 日的最佳知识提供的。

依赖项