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

rs_sha3_224

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

3 个版本

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

#2439 in 加密学

37 个月下载量
用于 2 crates

GPL-2.0-only

135KB
2.5K SLoC

rs_sha3_224

rs_sha3_224 是实现 SHA-3_224 加密哈希算法的 Rust crate。此基于置换的哈希算法设计用于与 Rust 的 libcore 兼容,在 #![no_std] 上下文中运行,允许它作为一个独立 crate 在特定用例中使用,也可以在 #![no_std]#![no_alloc] 环境中运行,这使得它在动态内存分配不可行的系统中也很适用。

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

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

根据这些建议,NIST 的推荐意味着 SHA-3_224 适用于以下环境

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

除了这些具体建议之外,SHA-3_224 还可以在以下情况下使用

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

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

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

如何使用

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

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

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

    use rs_sha3_224::{HasherContext, Sha3_224Hasher};
    
    let mut sha3_224hasher = Sha3_224Hasher::default();
    sha3_224hasher.write(b"your string here");
    
    let u64result = sha3_224hasher.finish();
    let bytes_result = HasherContext::finish(&mut sha3_224hasher);
    assert_eq!(u64result, 0xDDF2FCD38ED7C536);
    assert_eq!(format!("{bytes_result:02x}"), "ddf2fcd38ed7c536146be476795619b9232eee08d83a94d40ebd9f79");
    assert_eq!(format!("{bytes_result:02X}"), "DDF2FCD38ED7C536146BE476795619B9232EEE08D83A94D40EBD9F79");
    assert_eq!(
        bytes_result,
        [
            0xDD, 0xF2, 0xFC, 0xD3, 0x8E, 0xD7, 0xC5, 0x36, 0x14, 0x6B, 0xE4, 0x76, 0x79, 0x56,
            0x19, 0xB9, 0x23, 0x2E, 0xEE, 0x08, 0xD8, 0x3A, 0x94, 0xD4, 0x0E, 0xBD, 0x9F, 0x79
        ]
    )
    

更多信息

有关对 rs_sha3_224 的更详细探索、其他可用加密函数的概述以及更广泛的 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)。 使用伪随机函数进行密钥导出的建议。 NIST 特别出版物 800-108


注意:截至 2023 年 6 月 2 日,提供的参考是最新的知识。

依赖关系