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.4.0"Alternatively, you can use the cargo add subcommand:
cargo add chksum§Usage
Use the chksum function with the desired algorithm to calculate digest of file, directory and so on.
use std::fs::File;
use chksum::{chksum, SHA2_256};
let file = File::open(path)?;
let digest = chksum::<SHA2_256>(file)?;
assert_eq!(
digest.to_hex_lowercase(),
"44752f37272e944fd2c913a35342eaccdd1aaf189bae50676b301ab213fc5061"
);Alternatively, use the chksum function directly from the chosen hash module.
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.
md5enables MD5, accessible via themd5module.sha1enables SHA-1, accessible via thesha1module.sha2-224enables SHA-2 224, accessible via thesha2_224module.sha2-256enables SHA-2 256, accessible via thesha2_256module.sha2-384enables SHA-2 384, accessible via thesha2_384module.sha2-512enables SHA-2 512, accessible via thesha2_512module.
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.4.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.
readerenables thereadermodule with theReaderstruct within each variant module.writerenables thewritermodule with theWriterstruct 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.4.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::async_chksum;async-runtime-tokiopub use chksum_core::AsyncChksumable;async-runtime-tokiopub 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;md5pub use chksum_md5::MD5;md5pub use chksum_reader as reader;readerpub use chksum_reader::Reader;readerpub use chksum_sha1 as sha1;sha1pub use chksum_sha1::SHA1;sha1pub use chksum_sha2 as sha2;sha2-224orsha2-256orsha2-384orsha2-512pub use chksum_sha2::sha2_224;sha2-224pub use chksum_sha2::sha2_256;sha2-256pub use chksum_sha2::sha2_384;sha2-384pub use chksum_sha2::sha2_512;sha2-512pub use chksum_sha2::SHA2_224;sha2-224pub use chksum_sha2::SHA2_256;sha2-256pub use chksum_sha2::SHA2_384;sha2-384pub use chksum_sha2::SHA2_512;sha2-512pub use chksum_writer as writer;writerpub use chksum_writer::Writer;writer