#message-authentication #hmac #data-integrity #hashing #cryptography #hash #algorithm

rs_hmac

rs_hmac 是 HMAC (基于哈希的消息认证码) 密码哈希算法的 Rust 实现,作为更大的 rs_shield 项目的组成部分。此软件包以独立的方式提供 HMAC 哈希功能,非常适合仅需要 HMAC 的情况。值得注意的是,此 HMAC 实现与本项目中的所有哈希函数兼容,能够实现灵活的、定制的密码学解决方案。对于寻求完整密码学函数集的用户,此算法也包含在更广泛的 rs_shield 库捆绑包中。与更大的项目一样,rs_hmac 的重点是性能、安全性和开放性,致力于持续维护和改进。

3 个版本

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

算法 中排名 2380

每月下载 36
2 crate 中使用

GPL-2.0-only

115KB
2K SLoC

rs_hmac

rs_hmac crate 提供了与 RustyShield 库中所有哈希函数算法兼容的密钥哈希消息认证码 (HMAC) 实现。HMAC 是一种涉及密码学哈希函数和秘密密码学密钥的特定类型消息认证码 (MAC),用于确认数据的完整性和消息的真实性。

此 HMAC 实现符合联邦信息处理标准 (FIPS) 公布 198[^1]。国家标准与技术研究院 (NIST) 对 HMAC 的使用提供了以下建议

"HMAC 是一种使用密码学哈希函数进行消息认证的机制。HMAC 可以与任何迭代密码学哈希函数一起使用,例如 SHA-256,结合一个共享的密钥。HMAC 的密码学强度取决于底层哈希函数的特性。"

根据这一建议,HMAC 在以下用例中有所涉及

  • 密码学数据完整性检查。
  • 涉及共享密钥的认证方法。
  • 在网络安全协议中防止篡改。
  • 与公钥算法结合时生成数字签名。

除了这些特定用例之外,HMAC 还可以在更广泛的领域找到应用

  • 确保数据存储和检索中的数据完整性[^2]。
  • 软件更新或数据传输的认证[^3]。
  • 分布式系统中的唯一标识符生成[^4]。
  • 基于哈希的伪随机数生成器[^5]。

鉴于您的特定应用程序的安全要求,应仔细考虑这些点。

如何使用

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

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

    rs_hmac = "0.1.*"
    
  2. 添加rs_shield上可用的任何哈希函数。在这种情况下,我们将使用SHAKE128算法作为示例

    rs_shake128 = "0.1.*"
    
  3. 在您的代码中使用rs_hmac模块提供的函数。以下是从字符串和密钥创建HMAC的示例

    use rs_hmac::Hmac;
    use rs_shake128::Shake128State;
    
    const BYTE_OUTPUT_LENGTH: usize = 20;
    let key = b"your key here";
    let data = b"your string here";
    let byte_result = Hmac::<Shake128State<BYTE_OUTPUT_LENGTH>, BYTE_OUTPUT_LENGTH>::digest(key, data);
    
    assert_eq!(format!("{byte_result:X}"), "C17043C47B31C5897E35E658AD9521734E5CBF")
    

更多信息

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

贡献

鼓励潜在贡献者咨询我们GitHub页面上的贡献指南

许可证

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

参考

[^1]: 国家标准技术研究院. (2008). 密钥散列消息认证码(HMAC). FIPS PUB 198 [^2]: 国家标准技术研究院. (2012). 通过提取-扩展进行密钥派生的建议. SP 800-56C [^3]: Krawczyk, H., Bellare, M., & Canetti, R. (1997). HMAC: 密钥散列消息认证码. RFC 2104 [^4]: Linus Torvalds. (2005). Git: 一个分布式版本控制系统. 软件实践与经验, 41(1), 79-88. DOI:10.1002/spe.1006 [^5]: Dodis, Y., Pointcheval, D., Ruhault, S., Vergniaud, D., & Wichs, D. (2013). 具有输入的伪随机数生成器的安全性分析:/dev/random并不健壮. 链接


注意:截至2023年5月17日,已提供参考信息。

依赖关系