#哈希 #哈希 #消息认证 #SHA-3 #算法 #密码学 #SHA-3-256

rs_sha3_256

rs_sha3_256 是 SHA3-256 密码哈希算法的 Rust 实现,是更大项目 rs_shield 的一部分。该软件包以独立的方式提供 SHA3-256 哈希功能,非常适合只需要 SHA3-256 的情况下。对于那些寻求一套完整的密码学函数的人来说,这个算法也包含在更广泛的 rs_shield 库捆绑包中。 rs_sha3_256 和更大项目的重点是性能、安全性和开放性,并致力于持续维护和改进。

3 个版本

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

713算法

Download history 132/week @ 2024-03-13 29/week @ 2024-03-20 29/week @ 2024-03-27 62/week @ 2024-04-03 160/week @ 2024-04-10 170/week @ 2024-04-17 218/week @ 2024-04-24 319/week @ 2024-05-01 182/week @ 2024-05-08 62/week @ 2024-05-15 131/week @ 2024-05-22 220/week @ 2024-05-29 263/week @ 2024-06-05 181/week @ 2024-06-12 270/week @ 2024-06-19 332/week @ 2024-06-26

每月下载 1,137
3 crates 中使用

GPL-2.0-only

135KB
2.5K SLoC

rs_sha3_256

rs_sha3_256 是实现 SHA-3_256 密码哈希算法的 Rust crate。这个基于置换的哈希算法旨在与 Rust 的 libcore 在 #![no_std] 环境下兼容,允许它作为独立 crate 用于特殊用途,并在 #![no_std]#![no_alloc] 环境中运行,这使得它在动态内存分配不可行的系统中非常适用。

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

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

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

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

除了这些具体的推荐之外,SHA-3_256 还可能应用于

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

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

要访问全面的加密功能,可以使用rs_sha3_256作为rs_shield库捆绑包的一部分。

如何使用

以下是使用rs_sha3_256crate在您的Rust项目中进行的步骤

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

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

    use rs_sha3_256::{HasherContext, Sha3_256Hasher};
    
    let mut sha3_256hasher = Sha3_256Hasher::default();
    sha3_256hasher.write(b"your string here");
    
    let u64result = sha3_256hasher.finish();
    let bytes_result = HasherContext::finish(&mut sha3_256hasher);
    assert_eq!(u64result, 0x4722CA201B0E3369);
    assert_eq!(format!("{bytes_result:02x}"), "4722ca201b0e33697597ff6abd97e83b73c4ebd2f680b3ac23616e96dc351648");
    assert_eq!(format!("{bytes_result:02X}"), "4722CA201B0E33697597FF6ABD97E83B73C4EBD2F680B3AC23616E96DC351648");
    assert_eq!(
        bytes_result,
        [
            0x47, 0x22, 0xCA, 0x20, 0x1B, 0x0E, 0x33, 0x69, 0x75, 0x97, 0xFF, 0x6A, 0xBD, 0x97, 0xE8, 0x3B, 0x73, 0xC4,
            0xEB, 0xD2, 0xF6, 0x80, 0xB3, 0xAC, 0x23, 0x61, 0x6E, 0x96, 0xDC, 0x35, 0x16, 0x48
        ]
    )
    

更多信息

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

贡献

潜在的贡献者被鼓励查阅我们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). 允许误差的哈希编码中的时空权衡. Communications of the ACM,13(7),422-426. DOI:10.1145/362686.362692 [^6]: 美国国家标准与技术研究院. (2012). 使用伪随机函数进行密钥推导的建议. NIST特别出版物800-108


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

依赖项