1个不稳定版本
0.10.0 | 2024年3月27日 |
---|
#2576 在 加密学
6,745 每月下载次数
在 13 个crate中(直接使用3个)使用
1MB
2.5K SLoC
RustCrypto: SHA-1 Checked
SHA-1加密哈希算法的纯Rust实现,具有冲突检测功能。
🚨 警告:加密学上已损坏!🚨
SHA-1哈希函数应被视为加密学上已损坏,不适用于任何安全关键用途,因为它实际上易受到选择前缀冲突的攻击。
但是,此crate提供了由git开创的检测算法,当发生哈希冲突时检测并防止它们。有关此工作的更多细节,请参阅论文。
由于需要执行更多工作,此实现将比纯SHA-1实现慢。
示例
一次性API
use hex_literal::hex;
use sha1_checked::Sha1;
let result = Sha1::try_digest(b"hello world");
assert_eq!(result.hash().as_ref(), hex!("2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"));
assert!(!result.has_collision());
增量API
use hex_literal::hex;
use sha1_checked::{Sha1, Digest};
let mut hasher = Sha1::new();
hasher.update(b"hello world");
let result = hasher.try_finalize();
assert_eq!(result.hash().as_ref(), hex!("2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"));
assert!(!result.has_collision());
还可以参考RustCrypto/hashes的readme中的示例部分。
最低支持的Rust版本
Rust 1.72 或更高版本。
最低支持的Rust版本可能在将来更改,但将以小版本号的增加来完成。
SemVer策略
- 此库的所有默认功能都受SemVer的保护
- 如上所述,MSRV被认为免于SemVer
许可
此crate的许可协议为以下之一
任选其一。
贡献
除非你明确声明,否则任何有意提交以包含在你提交的工作中的贡献,根据Apache-2.0许可证定义,将按照上述方式双重许可,没有任何附加条款或条件。