#哈希 #哈希 #安全 #密码学 #独立 #算法 #sha-512-256

rs_sha512_256

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

3个版本

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

算法 中排名 2028

每月下载量 34
用于 2 crate

GPL-2.0-only

140KB
2.5K SLoC

rs_sha512_256

rs_sha512_256 是一个 Rust crate,实现了 SHA-512/256 密码哈希算法。在 #![no_std] 环境中配置为与 Rust 的 libcore 兼容,它作为一个独立的 crate 用于特殊用途,并且与 #![no_std]#![no_alloc] 环境兼容,适用于无法进行动态内存分配的系统。

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

"SHA-512/256 提供了 128 位的安全性以抵御冲突攻击,因此适用于需要 128 位哈希长度的函数。"

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

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

除了这些特定的建议之外,SHA-512/256 还可用于

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

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

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

如何使用

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

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

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

    use rs_sha512_256::{HasherContext, Sha512_256Hasher};
    
    let mut sha512_256hasher = Sha512_256Hasher::default();
    sha512_256hasher.write(b"your string here");
    
    let u64result = sha512_256hasher.finish();
    let bytes_result = HasherContext::finish(&mut sha512_256hasher);
    assert_eq!(u64result, 0xD6F2B480B2185883);
    assert_eq!(format!("{bytes_result:02x}"), "d6f2b480b21858837024cd2d4823c7baf48529d3688d407c7ef35a1f783c0b57");
    assert_eq!(format!("{bytes_result:02X}"), "D6F2B480B21858837024CD2D4823C7BAF48529D3688D407C7EF35A1F783C0B57");
    assert_eq!(
        bytes_result,
        [
            0xD6, 0xF2, 0xB4, 0x80, 0xB2, 0x18, 0x58, 0x83, 0x70, 0x24, 0xCD, 0x2D, 0x48, 0x23, 0xC7, 0xBA, 0xF4, 0x85,
            0x29, 0xD3, 0x68, 0x8D, 0x40, 0x7C, 0x7E, 0xF3, 0x5A, 0x1F, 0x78, 0x3C, 0x0B, 0x57
        ]
    )
    

更多信息

有关 rs_sha512_256 的更详细探讨、其他可用加密函数的概述以及更广泛的 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日,已根据最佳知识提供参考。

依赖关系