#hashing #hash #security #no-alloc #standalone #sha-512-224

rs_sha512_224

rs_sha512_224 是 SHA-512/224 加密哈希算法的 Rust 实现,是更大项目 rs_shield 的一部分。此软件包以独立方式提供 SHA-512/224 哈希功能,适用于仅需要 SHA-512/224 的情况。对于那些寻求一套完整的加密函数的人来说,此算法也包含在更广泛的 rs_shield 库捆绑包中。 rs_sha512_224 和更大项目的主要重点是性能、安全性和开放性,致力于持续的维护和改进。

3 个版本

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

#2362加密学

每月 33 次下载
2 crates 中使用

GPL-2.0-only

140KB
2.5K SLoC

rs_sha512_224

rs_sha512_224 是实现 SHA-512/224 加密哈希算法的 Rust 包。在 #![no_std] 环境下配置,以与 Rust 的 libcore 兼容,作为一个独立的包用于特殊用途,并且也与 #![no_std]#![no_alloc] 环境兼容,这使得它适用于无法进行动态内存分配的系统。

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

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

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

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

除了这些具体的建议外,SHA-512/224 还可能适用于以下用途

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

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

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

使用方法

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

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

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

    use rs_sha512_224::{HasherContext, Sha512_224Hasher};
    
    let mut sha512_224hasher = Sha512_224Hasher::default();
    sha512_224hasher.write(b"your string here");
    
    let u64result = sha512_224hasher.finish();
    let bytes_result = HasherContext::finish(&mut sha512_224hasher);
    assert_eq!(u64result, 0x233E7E4F520121E4);
    assert_eq!(format!("{bytes_result:02x}"), "233e7e4f520121e40eef63455e3b7f1815aabb985431e7afbbf880b3");
    assert_eq!(format!("{bytes_result:02X}"), "233E7E4F520121E40EEF63455E3B7F1815AABB985431E7AFBBF880B3");
    assert_eq!(
        bytes_result,
        [
            0x23, 0x3E, 0x7E, 0x4F, 0x52, 0x01, 0x21, 0xE4, 0x0E, 0xEF, 0x63, 0x45, 0x5E, 0x3B, 0x7F, 0x18, 0x15, 0xAA,
            0xBB, 0x98, 0x54, 0x31, 0xE7, 0xAF, 0xBB, 0xF8, 0x80, 0xB3
        ]
    )
    

更多信息

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

贡献

鼓励潜在的贡献者查阅我们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). 允许错误的空间/时间权衡在哈希编码中. 计算机通信,13(7),422-426. DOI:10.1145/362686.362692


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

依赖项