#md5 #sha-256 #sha-1 #hash

无std extendhash

Rust哈希扩展库

20个版本 (11个稳定版)

1.0.10 2022年11月12日
1.0.9 2020年9月7日
1.0.8 2020年3月9日
1.0.1 2020年2月10日
0.1.0 2020年1月31日

#159 in 算法

Download history 624/week @ 2024-03-13 560/week @ 2024-03-20 311/week @ 2024-03-27 298/week @ 2024-04-03 353/week @ 2024-04-10 383/week @ 2024-04-17 270/week @ 2024-04-24 511/week @ 2024-05-01 428/week @ 2024-05-08 377/week @ 2024-05-15 397/week @ 2024-05-22 357/week @ 2024-05-29 479/week @ 2024-06-05 352/week @ 2024-06-12 352/week @ 2024-06-19 379/week @ 2024-06-26

每月 1,626 次下载
用于 17 crate (直接使用 2 个)

MIT/Apache

91KB
1.5K SLoC

extendhash

crates.io docs.rs

extendhash 是一个用于计算哈希和哈希扩展的Rust库。

支持的哈希算法

  • MD5
  • SHA-0
  • SHA-1
  • SHA-256
  • SHA-512

它支持 #![no_std]. 所有哈希算法和哈希扩展都是通过常量函数(使用 const fn)实现的,因此可以在常量值中使用。

用法

use extendhash::sha256;

let secret_data = "This is a secret!".as_bytes();
let hash = sha256::compute_hash(secret_data);
let data_length = secret_data.len();

// Now we try computing a hash extension,
// assuming that `secret_data` is not available.
// We only need `hash` and `data_length`.
let appended_message = "Appended message.".as_bytes();
let combined_hash = sha256::extend_hash(
	hash, data_length, appended_message);

// Now we verify that `combined_hash` matches the
// concatenation (note the intermediate padding):
let mut combined_data = Vec::<u8>::new();
combined_data.extend_from_slice(secret_data);
let padding = sha256::padding_for_length(data_length);
combined_data.extend_from_slice(padding.as_slice());
combined_data.extend_from_slice(appended_message);
assert_eq!(
	combined_hash,
	sha256::compute_hash(combined_data.as_slice()));

许可证

许可协议为以下之一:

任选其一。

贡献

除非你明确声明,否则根据Apache-2.0许可证定义,你故意提交给作品的所有贡献将按上述方式双授权,不附加任何额外条款或条件。

无运行时依赖