Crate chksum_sha2

Crate chksum_sha2 

Source
Expand description

This crate provides an implementation of SHA-2 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_sha2 crate.

§Setup

To use this crate, add the following entry to your Cargo.toml file in the dependencies section:

[dependencies]
chksum-sha2 = "0.1.0"

Alternatively, you can use the cargo add subcommand:

cargo add chksum-sha2

§Usage

Use the chksum function to calculate digest of file, directory and so on.

use std::fs::File;

use chksum_sha2::sha2_256;

let file = File::open(path)?;
let digest = sha2_256::chksum(file)?;
assert_eq!(
    digest.to_hex_lowercase(),
    "44752f37272e944fd2c913a35342eaccdd1aaf189bae50676b301ab213fc5061"
);

§Asynchronous Runtime

Use the async_chksum function to calculate digest of file, directory and so on.

use chksum_sha2::sha2_256;
use tokio::fs::File;

let file = File::open(path).await?;
let digest = sha2_256::async_chksum(file).await?;
assert_eq!(
    digest.to_hex_lowercase(),
    "44752f37272e944fd2c913a35342eaccdd1aaf189bae50676b301ab213fc5061"
);

§Input Types

§Bytes

§Array

use chksum_sha2::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::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::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::sha2_256;

let data = "&str";
let digest = sha2_256::chksum(data)?;
assert_eq!(
    digest.to_hex_lowercase(),
    "44752f37272e944fd2c913a35342eaccdd1aaf189bae50676b301ab213fc5061"
);

§String

use chksum_sha2::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::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::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::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::sha2_256;

let stdin = stdin();
let digest = sha2_256::chksum(stdin)?;
assert_eq!(
    digest.to_hex_lowercase(),
    "44752f37272e944fd2c913a35342eaccdd1aaf189bae50676b301ab213fc5061"
);

§Algorithms

§SHA-2 224

use std::fs::File;

use chksum_sha2::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::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::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::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 SHA-2 algorithm variants.

  • 224 enables SHA-2 224, accessible via the sha2_224 module.
  • 256 enables SHA-2 256, accessible via the sha2_256 module.
  • 384 enables SHA-2 384, accessible via the sha2_384 module.
  • 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-sha2 = { version = "0.1.0", default-features = false, features = ["256", "512"] }

Alternatively, you can use the cargo add subcommand:

cargo add chksum-sha2 --no-default-features --features 256,512

§Extra Options

Cargo features are also utilized to enable extra options.

  • reader enables the reader module with the Reader struct within each variant module.
  • writer enables the writer module with the Writer 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-sha2 = { version = "0.1.0", features = ["reader", "writer"] }

Alternatively, you can use the cargo add subcommand:

cargo add chksum-sha2 --features reader,writer

§Asynchronous Runtime

  • async-runtime-tokio: Enables async interface for Tokio runtime.

By default, neither of these features is enabled.

§License

This crate is licensed under the MIT License.

Re-exports§

pub use chksum_core::async_chksum;async-runtime-tokio
pub use chksum_core::chksum;
pub use chksum_core::Digest;
pub use chksum_core::Error;
pub use chksum_core::Hash;
pub use chksum_core::Result;
pub use chksum_hash_sha2 as hash;
pub use chksum_sha2_224 as sha2_224;224
pub use chksum_sha2_224::SHA2_224;224
pub use chksum_sha2_256 as sha2_256;256
pub use chksum_sha2_256::SHA2_256;256
pub use chksum_sha2_384 as sha2_384;384
pub use chksum_sha2_384::SHA2_384;384
pub use chksum_sha2_512 as sha2_512;512
pub use chksum_sha2_512::SHA2_512;512