#hashing #checksum #blake2b #operating-system #file-checksum #b2sum

paranoid-hash

为那些对安全持怀疑态度的人提供的哈希库

5个版本 (破坏性更新)

0.5.0 2022年3月2日
0.4.0 2021年10月10日
0.3.0 2021年10月6日
0.2.0 2021年9月26日
0.1.0 2021年9月21日

#741 in 文件系统

MIT/Apache

18KB
151

Paranoid-Hash

Crates.io Crates.io

Paranoid-Hash是一个Rust crate,用于使用Rust库提供的哈希函数和操作系统提供的哈希函数对文件、字符串或字节进行哈希。

功能

哈希函数

使用的库哈希函数是具有1到64位任意给定摘要大小的Blake2b

操作系统哈希函数可以是SHA1SHA256SHA512

比较哈希值

包含一个比较哈希函数的函数,并尝试以常量时间运行。

十六进制表示

哈希函数返回两个用十六进制编码的字符串。您可以使用函数decode_from_hex()获取字节表示

如何使用

选择摘要大小和哈希函数

use paranoid_hash::{ParanoidHash,OsAlgorithm};

fn main(){
	// Hash Using Blake2b (32 bytes) and SHA256
	let context = ParanoidHash::new(32usize,OsAlgorithm::SHA256);
}

哈希文件

use paranoid_hash::{ParanoidHash};

fn main(){
    // Default Config
        // [LIB] BLAKE2B_64
        // [OS] SHA512
    let context = ParanoidHash::default();

    // Blake2B and SHA512 Hash Function Returns
    let (blake_64,sha512) = context.read("example_file.txt").expect("Failed To Read File");
}

哈希字符串

use paranoid_hash::{ParanoidHash};

fn main(){
	let s: String = String::from("Hello. This string will be hashed");

	let context = ParanoidHash::default();
	
	let (blake2b,sha512) = context.read_str(s);

}

哈希字节

use paranoid_hash::{ParanoidHash};

fn main(){
	let bytes: Vec<u8> = vec![78,32,48,64];

	let context = ParanoidHash::default();
	
	let (blake2b,sha512) = context.read_bytes(&bytes);

}

从十六进制解码

use paranoid_hash::{ParanoidHash};

fn main(){
	let bytes: Vec<u8> = vec![78,32,48,64];

	let context = ParanoidHash::default();
	
	let (blake2b,sha512) = context.read_bytes(&bytes);
    
    let hash_bytes = ParanoidHash::decode_from_hex(blake2b);

}

许可

此软件受

  • MIT许可
  • Apache 2.0

依赖关系

~205–780KB
~13K SLoC