#sha-1 #collision-detection #hash #hashing #crypto

no-std sha1-checked

具有冲突检测的SHA-1哈希函数

1个不稳定版本

0.10.0 2024年3月27日

#2576加密学

Download history 254/week @ 2024-05-12 2/week @ 2024-05-19 141/week @ 2024-05-26 846/week @ 2024-06-02 1066/week @ 2024-06-09 1099/week @ 2024-06-16 844/week @ 2024-06-23 836/week @ 2024-06-30 1444/week @ 2024-07-07 1164/week @ 2024-07-14 1518/week @ 2024-07-21 2420/week @ 2024-07-28

6,745 每月下载次数
13 个crate中(直接使用3个)使用

MIT/Apache

1MB
2.5K SLoC

RustCrypto: SHA-1 Checked

crate Docs Apache2/MIT licensed Rust Version Project Chat Build Status

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许可证定义,将按照上述方式双重许可,没有任何附加条款或条件。

依赖项