#hashing #hash #security #hasher #standalone #sha-384

rs_sha384

rs_sha384是SHA-384加密散列算法的Rust实现,是更大项目rs_shield的一部分。此软件包以独立方式提供SHA-384散列功能,非常适合只需SHA-384的情况。对于那些寻求全面加密函数集的人来说,这个相同的算法也包含在更广泛的rs_shield库包中。rs_sha384和更大项目关注的重点是性能、安全和开放性,并致力于持续的维护和改进。

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日

#2190 in 密码学

49 每月下载量
2 crates 中使用

GPL-2.0-only

140KB
2.5K SLoC

rs_sha384

rs_sha384是一个实现SHA-384加密散列算法的Rust crate。在#![no_std]上下文中配置以兼容Rust的libcore,它作为一个独立的crate运行,适用于特定的用例,并且与#![no_std]#![no_alloc]环境兼容,使其适用于动态内存分配不可行的系统。

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

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

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

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

除了这些特定的建议外,SHA-384还可能适用于

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

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

为了访问一系列加密函数,可以使用 rs_sha384 作为 rs_shield 库包的一部分。

如何使用

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

  1. Cargo.toml[dependencies] 部分下添加以下行

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

    use rs_sha384::{HasherContext, Sha384Hasher};
    
    let mut sha512hasher = Sha384Hasher::default();
    sha512hasher.write(b"your string here");
    
    let u64result = sha512hasher.finish();
    let bytes_result = HasherContext::finish(&mut sha512hasher);
    assert_eq!(u64result, 0x27C3D7DA682CF0AB);
    assert_eq!(
        format!("{bytes_result:02x}"),
        "27c3d7da682cf0ab27648e1f5da0a6c18ea13d9629e1ce7d9df1f38b1ee7dfb6ebf5aede6f8ddc9f8c2b9e96d29e4e63"
    );
    assert_eq!(
        format!("{bytes_result:02X}"),
        "27C3D7DA682CF0AB27648E1F5DA0A6C18EA13D9629E1CE7D9DF1F38B1EE7DFB6EBF5AEDE6F8DDC9F8C2B9E96D29E4E63"
    );
    assert_eq!(
        bytes_result,
        [
            0x27, 0xC3, 0xD7, 0xDA, 0x68, 0x2C, 0xF0, 0xAB, 0x27, 0x64, 0x8E, 0x1F, 0x5D, 0xA0, 0xA6, 0xC1, 0x8E, 0xA1,
            0x3D, 0x96, 0x29, 0xE1, 0xCE, 0x7D, 0x9D, 0xF1, 0xF3, 0x8B, 0x1E, 0xE7, 0xDF, 0xB6, 0xEB, 0xF5, 0xAE, 0xDE,
            0x6F, 0x8D, 0xDC, 0x9F, 0x8C, 0x2B, 0x9E, 0x96, 0xD2, 0x9E, 0x4E, 0x63
        ]
    )
    

更多信息

有关 rs_sha384 的更详细探讨、其他可用的加密函数概述以及 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日的最佳知识提供的。

依赖关系