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 算法
每月 1,626 次下载
用于 17 个 crate (直接使用 2 个)
91KB
1.5K SLoC
extendhash
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版本 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确声明,否则根据Apache-2.0许可证定义,你故意提交给作品的所有贡献将按上述方式双授权,不附加任何额外条款或条件。