19 个版本 (7 个稳定版)

2.2.1 2020年7月12日
2.2.0 2020年6月26日
2.0.1 2020年5月30日
1.0.0-rc2020年5月15日
0.9.9 2020年5月1日

#994 in 加密

Download history 87/week @ 2024-03-13 103/week @ 2024-03-20 112/week @ 2024-03-27 103/week @ 2024-04-03 93/week @ 2024-04-10 92/week @ 2024-04-17 94/week @ 2024-04-24 93/week @ 2024-05-01 77/week @ 2024-05-08 80/week @ 2024-05-15 91/week @ 2024-05-22 117/week @ 2024-05-29 107/week @ 2024-06-05 72/week @ 2024-06-12 74/week @ 2024-06-19 52/week @ 2024-06-26

每月317次下载
用于 5 crate

MIT 许可证

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