#sha-256 #sha-2 #sha

rs_sha256

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

4 个版本

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

#1458算法


用于 2 crate

GPL-2.0-only

140KB
2.5K SLoC

rs_sha256

rs_sha256 是实现 SHA-256 密码散列算法的 Rust crate。在 #![no_std] 环境中配置,以与 Rust 的 libcore 兼容,作为一个独立的 crate 用于特定用例,并且也与 #![no_std]#![no_alloc] 环境兼容,使其适用于无法进行动态内存分配的系统。

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

"SHA-256 提供了 128 位的碰撞攻击安全性,因此适用于需要 128 位哈希长度的函数。"

根据这一建议,NIST 的建议表明 SHA-256 适用于以下环境

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

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

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

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

要访问广泛的加密函数,可以将 rs_sha256 作为 rs_shield 库捆绑包的一部分使用。

如何使用

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

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

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

    use rs_sha256::{HasherContext, Sha256Hasher};
    
    let mut sha256hasher = Sha256Hasher::default();
    sha256hasher.write(b"your string here");
    
    let u64result = sha256hasher.finish();
    let bytes_result = HasherContext::finish(&mut sha256hasher);
    assert_eq!(u64result, 0xEBEA8483C5B21AE6);
    assert_eq!(format!("{bytes_result:02x}"), "ebea8483c5b21ae61081786be10f9704ce8975e1e5b505c03f6ab8514ecc5c0c");
    assert_eq!(format!("{bytes_result:02X}"), "EBEA8483C5B21AE61081786BE10F9704CE8975E1E5B505C03F6AB8514ECC5C0C");
    assert_eq!(
        bytes_result,
        [
            0xEB, 0xEA, 0x84, 0x83, 0xC5, 0xB2, 0x1A, 0xE6, 0x10, 0x81, 0x78, 0x6B, 0xE1, 0x0F, 0x97, 0x04, 0xCE, 0x89,
            0x75, 0xE1, 0xE5, 0xB5, 0x05, 0xC0, 0x3F, 0x6A, 0xB8, 0x51, 0x4E, 0xCC, 0x5C, 0x0C
        ]
    )
    

更多信息

要更深入地了解rs_sha256,其他可用的加密函数概述以及rs_shield项目的介绍,请参考crates.io上的RustyShield项目页面

贡献

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

许可证

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

参考文献

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

[^2]: Linus Torvalds. (2005). Git: A distributed version control system. Software: Practice and Experience, 41(1), 79-88. DOI:10.1002/spe.1006

[^3]: Krawczyk, H., Bellare, M., & Canetti, R. (1997). HMAC: Keyed-Hashing for Message Authentication. RFC 2104

[^4]: Merkle, R. C. (1988). A Digital Signature Based on a Conventional Encryption Function. Link

[^5]: Bloom, B. H. (1970). Space/time trade-offs in hash coding with allowable errors. Communications of the ACM, 13(7), 422-426. DOI:10.1145/362686.362692


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

依赖项