#sha-224 #sha #sha-2

rs_sha224

rs_sha224 是 SHA-224 密码哈希算法的 Rust 实现,是更大项目 rs_shield 的一部分。此包以独立方式提供 SHA-224 哈希功能,非常适合只需 SHA-224 的情况。对于那些寻求全面加密函数集的用户,此算法也包含在更广泛的 rs_shield 库捆绑包中。 rs_sha224 和更大项目的主要关注点是性能、安全性和开放性,并致力于持续维护和改进。

5 个版本

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

算法 中排名第 967

Download history 17/week @ 2024-03-07 11/week @ 2024-03-14 7/week @ 2024-03-28 5/week @ 2024-04-04 2/week @ 2024-04-11 5/week @ 2024-04-18

每月下载量 53
2 crates 中使用

GPL-2.0-only

135KB
2.5K SLoC

rs_sha224

rs_sha224 是一个 Rust crate,提供 SHA-224 密码哈希算法。在 #![no_std] 上下文中配置为与 Rust 的 libcore 兼容,作为一个独立的 crate 用于特定的用例,并且与 #![no_std]#![no_alloc] 环境兼容,使其适用于无法进行动态内存分配的系统。

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

"SHA-224 提供了针对冲突攻击的 112 位安全性,因此适合需要 112 位哈希长度的功能。"

根据这一建议,NIST 的建议意味着 SHA-224 适合以下环境

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

除了这些具体的建议之外,SHA-224 还可能应用于

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

根据您的整体安全目标和风险容忍度,应仔细考虑这些点。

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

如何使用

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

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

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

    use rs_sha224::{HasherContext, Sha224Hasher};
    
    let mut sha224hasher = Sha224Hasher::default();
    sha224hasher.write(b"your string here");
    
    let u64result = sha224hasher.finish();
    let bytes_result = HasherContext::finish(&mut sha224hasher);
    assert_eq!(u64result, 0xC8DA90DF20FC1F9C);
    assert_eq!(format!("{bytes_result:02x}"), "c8da90df20fc1f9cad8bec106821904e8a27b9bcc79d954f1fa01b83");
    assert_eq!(format!("{bytes_result:02X}"), "C8DA90DF20FC1F9CAD8BEC106821904E8A27B9BCC79D954F1FA01B83");
    assert_eq!(
        bytes_result,
        [
            0xC8, 0xDA, 0x90, 0xDF, 0x20, 0xFC, 0x1F, 0x9C, 0xAD, 0x8B, 0xEC, 0x10, 0x68, 0x21, 0x90, 0x4E, 0x8A, 0x27,
            0xB9, 0xBC, 0xC7, 0x9D, 0x95, 0x4F, 0x1F, 0xA0, 0x1B, 0x83
        ]
    )
    

更多信息

要更详细地了解rs_sha224、其他可用的加密函数以及更广泛的rs_shield项目介绍,请参阅crates.io上的RustyShield项目页面

贡献

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

许可

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

参考文献

[^1]: 美国国家标准与技术研究院. (2015). 安全散列标准 (SHS). FIPS PUB 180-4

[^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). 允许错误的哈希编码中的空间/时间权衡. 通讯:ACM通讯,13(7),422-426. DOI:10.1145/362686.362692


注意:这些参考文献是根据2023年6月2日的最佳知识提供的。

依赖项