19 个版本 (7 个稳定版)
2.2.1 | 2020年7月12日 |
---|---|
2.2.0 | 2020年6月26日 |
2.0.1 | 2020年5月30日 |
1.0.0-rc | 2020年5月15日 |
0.9.9 | 2020年5月1日 |
#994 in 加密
每月317次下载
用于 5 crate
19KB
344 行
easy-hasher
Rust 的简易哈希库
哈希函数(所有示例使用 SHA256)
- 字符串:
sha256(&input)
1 - 文件:
file_sha256(&input)
1 - 原始二进制数据:
raw_sha256(input.clone())
2
支持的算法
- CRC
- CRC-8
- CRC-16
- CRC-32
- CRC-64
- MD2
- MD4
- MD5
- SHA1
- SHA2
- SHA-224
- SHA-256
- SHA-384
- SHA-512
- SHA-512/224
- SHA-512/256
- SHA3
- SHA3-224
- SHA3-256
- SHA3-384
- SHA3-512
- SHA3
- Keccak224
- Keccak256
- Keccak384
- Keccak512
SHAKE128 和 SHAKE256 将很快推出!
代码示例
字符串哈希
extern crate easy_hasher;
use easy_hasher::easy_hasher::*;
fn main() {
let string = "example string".to_string();
let hash = sha256(&string);
let string_hash = hash.to_hex_string();
assert_eq!(string_hash,
"aedfb92b3053a21a114f4f301a02a3c6ad5dff504d124dc2cee6117623eec706");
println!("SHA256({}) = {}", string, string_hash);
}
原始数据哈希
extern crate easy_hasher;
use easy_hasher::easy_hasher::*;
fn main() {
let data = vec![0xA7, 0x34, 0x9F, 0x02]; // just random data lol
let hash = raw_sha256(data.clone());
let string_hash = hash.to_hex_string();
assert_eq!(string_hash,
"54dd1903dd45589e9f30e5cb4529d09417347cb27c2f478c7a9e33875917000c");
println!("SHA256({}) = {}", Hash::hex_string(&data), string_hash);
}
文件哈希
extern crate easy_hasher;
use easy_hasher::easy_hasher::*;
fn main() {
let path = get_input(); //some input function
let file256 = file_sha256(&path);
let hash: Hash;
match file256 {
Ok(h) => hash = h,
Err(..) => abort()
}
println!("SHA256({}) = {}", path, hash.to_hex_string());
}
1:通过引用传递以避免 E0382(移动值的借用)
2:使用 .clone() 函数出于相同原因(并简化代码)
依赖关系
~1.5MB
~18K SLoC