3 个版本
0.1.2 | 2023年6月12日 |
---|---|
0.1.1 | 2023年6月4日 |
0.1.0 | 2023年5月30日 |
在 算法 中排名 2380
每月下载 36 次
在 2 crate 中使用
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_hmac
crate的步骤
-
在
Cargo.toml
中的[dependencies]
部分添加以下行rs_hmac = "0.1.*"
-
添加
rs_shield
上可用的任何哈希函数。在这种情况下,我们将使用SHAKE128
算法作为示例rs_shake128 = "0.1.*"
-
在您的代码中使用
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日,已提供参考信息。