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 日 |
#1458 在 算法 中
用于 2 crate
140KB
2.5K SLoC
rs_sha256
rs_sha256
是实现 SHA-256 密码散列算法的 Rust crate。在 #![no_std]
环境中配置,以与 Rust 的 libcore 兼容,作为一个独立的 crate 用于特定用例,并且也与 #![no_std]
、#![no_alloc]
环境兼容,使其适用于无法进行动态内存分配的系统。
此 SHA-256 实现符合联邦信息处理标准 (FIPS) 出版物 180-4[^1]。根据国家标准与技术研究院 (NIST) 指南,SHA-256 被推荐用于以下用例
"SHA-256 提供了 128 位的碰撞攻击安全性,因此适用于需要 128 位哈希长度的函数。"
根据这一建议,NIST 的建议表明 SHA-256 适用于以下环境
- 需要 128 位安全性的数字签名。
- 需要 128 位安全性的系统和协议中的加密散列函数。
- 需要 128 位安全性的认证方法。
除了这些具体的建议之外,SHA-256 还可能应用于
- 用于生成提交标识符的版本控制系统[^2]。
- 当需要抗碰撞时,基于哈希的消息认证码 (HMAC) [^3]。
- Merkle 树中的数据完整性检查[^4]。
- 作为 Bloom 过滤器中的随机哈希函数[^5]。
根据您的整体安全目标和风险容忍度,应仔细考虑这些点。
要访问广泛的加密函数,可以将 rs_sha256
作为 rs_shield
库捆绑包的一部分使用。
如何使用
以下是在Rust项目中使用rs_sha256
crate的步骤
-
请将以下行添加到您的
Cargo.toml
文件中的[dependencies]
部分rs_sha256 = "0.1.*"
-
在您的代码中使用
rs_sha256
模块提供的函数。以下是一个从字符串创建SHA-256散列的示例use rs_sha256::{HasherContext, Sha256Hasher}; let mut sha256hasher = Sha256Hasher::default(); sha256hasher.write(b"your string here"); let u64result = sha256hasher.finish(); let bytes_result = HasherContext::finish(&mut sha256hasher); assert_eq!(u64result, 0xEBEA8483C5B21AE6); assert_eq!(format!("{bytes_result:02x}"), "ebea8483c5b21ae61081786be10f9704ce8975e1e5b505c03f6ab8514ecc5c0c"); assert_eq!(format!("{bytes_result:02X}"), "EBEA8483C5B21AE61081786BE10F9704CE8975E1E5B505C03F6AB8514ECC5C0C"); assert_eq!( bytes_result, [ 0xEB, 0xEA, 0x84, 0x83, 0xC5, 0xB2, 0x1A, 0xE6, 0x10, 0x81, 0x78, 0x6B, 0xE1, 0x0F, 0x97, 0x04, 0xCE, 0x89, 0x75, 0xE1, 0xE5, 0xB5, 0x05, 0xC0, 0x3F, 0x6A, 0xB8, 0x51, 0x4E, 0xCC, 0x5C, 0x0C ] )
更多信息
要更深入地了解rs_sha256
,其他可用的加密函数概述以及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日的最佳知识提供的。