Expand description
This crate provides an implementation of various hash functions with a straightforward interface for computing digests of bytes, files, directories, and more.
For a low-level interface, you can explore the chksum_hash
crate.
Setup
To use this crate, add the following entry to your Cargo.toml
file in the dependencies
section:
[dependencies]
chksum = "0.3.0"
Alternatively, you can use the cargo add
subcommand:
cargo add chksum
Usage
Use the chksum
function to calcualate digest of file, directory and so on.
use std::fs::File;
use chksum::sha2_256;
let file = File::open(path)?;
let digest = sha2_256::chksum(file)?;
assert_eq!(
digest.to_hex_lowercase(),
"44752f37272e944fd2c913a35342eaccdd1aaf189bae50676b301ab213fc5061"
);
Input Types
Bytes
Array
use chksum::sha2_256;
let data = [0, 1, 2, 3];
let digest = sha2_256::chksum(data)?;
assert_eq!(
digest.to_hex_lowercase(),
"44752f37272e944fd2c913a35342eaccdd1aaf189bae50676b301ab213fc5061"
);
Vec
use chksum::sha2_256;
let data = vec![0, 1, 2, 3];
let digest = sha2_256::chksum(data)?;
assert_eq!(
digest.to_hex_lowercase(),
"44752f37272e944fd2c913a35342eaccdd1aaf189bae50676b301ab213fc5061"
);
Slice
use chksum::sha2_256;
let data = &[0, 1, 2, 3];
let digest = sha2_256::chksum(data)?;
assert_eq!(
digest.to_hex_lowercase(),
"44752f37272e944fd2c913a35342eaccdd1aaf189bae50676b301ab213fc5061"
);
Strings
str
use chksum::sha2_256;
let data = "&str";
let digest = sha2_256::chksum(data)?;
assert_eq!(
digest.to_hex_lowercase(),
"44752f37272e944fd2c913a35342eaccdd1aaf189bae50676b301ab213fc5061"
);
String
use chksum::sha2_256;
let data = String::from("String");
let digest = sha2_256::chksum(data)?;
assert_eq!(
digest.to_hex_lowercase(),
"44752f37272e944fd2c913a35342eaccdd1aaf189bae50676b301ab213fc5061"
);
File
use std::fs::File;
use chksum::sha2_256;
let file = File::open(path)?;
let digest = sha2_256::chksum(file)?;
assert_eq!(
digest.to_hex_lowercase(),
"44752f37272e944fd2c913a35342eaccdd1aaf189bae50676b301ab213fc5061"
);
Directory
use std::fs::read_dir;
use chksum::sha2_256;
let readdir = read_dir(path)?;
let digest = sha2_256::chksum(readdir)?;
assert_eq!(
digest.to_hex_lowercase(),
"44752f37272e944fd2c913a35342eaccdd1aaf189bae50676b301ab213fc5061"
);
Path
use std::path::PathBuf;
use chksum::sha2_256;
let path = PathBuf::from(path);
let digest = sha2_256::chksum(path)?;
assert_eq!(
digest.to_hex_lowercase(),
"44752f37272e944fd2c913a35342eaccdd1aaf189bae50676b301ab213fc5061"
);
Standard Input
use std::io::stdin;
use chksum::sha2_256;
let stdin = stdin();
let digest = sha2_256::chksum(stdin)?;
assert_eq!(
digest.to_hex_lowercase(),
"44752f37272e944fd2c913a35342eaccdd1aaf189bae50676b301ab213fc5061"
);
Algorithms
MD5
use std::fs::File;
use chksum::md5;
let file = File::open(path)?;
let digest = md5::chksum(file)?;
assert_eq!(
digest.to_hex_lowercase(),
"5c71dbb287630d65ca93764c34d9aa0d"
);
SHA-1
use std::fs::File;
use chksum::sha1;
let file = File::open(path)?;
let digest = sha1::chksum(file)?;
assert_eq!(
digest.to_hex_lowercase(),
"9fc42adac31303d68b444e6129f13f6093a0e045"
);
SHA-2 224
use std::fs::File;
use chksum::sha2_224;
let file = File::open(path)?;
let digest = sha2_224::chksum(file)?;
assert_eq!(
digest.to_hex_lowercase(),
"90382cbfda2656313ad61fd74b32ddfa4bcc118f660bd4fba9228ced"
);
SHA-2 256
use std::fs::File;
use chksum::sha2_256;
let file = File::open(path)?;
let digest = sha2_256::chksum(file)?;
assert_eq!(
digest.to_hex_lowercase(),
"44752f37272e944fd2c913a35342eaccdd1aaf189bae50676b301ab213fc5061"
);
SHA-2 384
use std::fs::File;
use chksum::sha2_384;
let file = File::open(path)?;
let digest = sha2_384::chksum(file)?;
assert_eq!(
digest.to_hex_lowercase(),
"12ecdfd463a85a301b7c29a43bf4b19cdfc6e5e86a5f40396aa6ae3368a7e5b0ed31f3bef2eb3071577ba610b4ed1cb8"
);
SHA-2 512
use std::fs::File;
use chksum::sha2_512;
let file = File::open(path)?;
let digest = sha2_512::chksum(file)?;
assert_eq!(
digest.to_hex_lowercase(),
"ed59c5759a9ece516cec0c0623142d0e9fe70a27d750eee7fd38f4550d50addd873d0fa1a51fc823c1e3d5cada203f4a05d8325caacb7d3e0727a701f3f07e5f"
);
Features
Algorithms
Cargo features are utilized to enable or disable specific hash algorithms.
md5
enables MD5, accessible via themd5
module.sha1
enables SHA-1, accessible via thesha1
module.sha2-224
enables SHA-2 224, accessible via the [sha2_224
] module.sha2-256
enables SHA-2 256, accessible via the [sha2_256
] module.sha2-384
enables SHA-2 384, accessible via the [sha2_384
] module.sha2-512
enables SHA-2 512, accessible via the [sha2_512
] module.
By default, all of these features are enabled.
To customize your setup, disable the default features and enable only those that you need in your Cargo.toml
file:
[dependencies]
chksum = { version = "0.3.0", default-features = false, features = ["sha1", "sha2-256", "sha2-512"] }
Alternatively, you can use the cargo add
subcommand:
cargo add chksum --no-default-features --features sha1,sha2-256,sha2-512
Extra Options
Cargo features are also utilized to enable extra options.
reader
enables thereader
module with theReader
struct within each variant module.writer
enables thewriter
module with theWriter
struct within each variant module.
By default, neither of these features is enabled.
To customize your setup, disable the default features and enable only those that you need in your Cargo.toml
file:
[dependencies]
chksum = { version = "0.3.0", features = ["reader", "writer"] }
Alternatively, you can use the cargo add
subcommand:
cargo add chksum --features reader,writer
License
This crate is licensed under the MIT License.
Re-exports
pub use chksum_core::chksum;
pub use chksum_core::hash;
pub use chksum_core::hash;
pub use chksum_core::Chksumable;
pub use chksum_core::Digest;
pub use chksum_core::Error;
pub use chksum_core::Hash;
pub use chksum_core::Hashable;
pub use chksum_core::Result;
pub use chksum_md5 as md5;
md5
pub use chksum_md5::MD5;
md5
pub use chksum_reader as reader;
reader
pub use chksum_reader::Reader;
reader
pub use chksum_sha1 as sha1;
sha1
pub use chksum_sha1::SHA1;
sha1
pub use chksum_sha2 as sha2;
sha2-224
orsha2-256
orsha2-384
orsha2-512
pub use chksum_sha2::sha2_224;
sha2-224
pub use chksum_sha2::sha2_256;
sha2-256
pub use chksum_sha2::sha2_384;
sha2-384
pub use chksum_sha2::sha2_512;
sha2-512
pub use chksum_sha2::SHA2_224;
sha2-224
pub use chksum_sha2::SHA2_256;
sha2-256
pub use chksum_sha2::SHA2_384;
sha2-384
pub use chksum_sha2::SHA2_512;
sha2-512
pub use chksum_writer as writer;
writer
pub use chksum_writer::Writer;
writer