goastler / sha_256

optimised sha-256
Apache License 2.0
0 stars 0 forks source link
digest hash rust sha sha-256 sha256

Sha_256

A fast implementation of sha-256 in rust.

Features

Installation

In your project, run:

cargo add sha_256

Usage

Import the library

use sha_256::Sha256;

Create an instance of the sha256 struct.

let mut sha256: Sha256 = Sha256::new();

Create your message in bytes.

let bytes = &[0u8, 1u8, 2u8];

Run sha256 to create a digest/hash.

let hash: [u8; 32] = sha256.digest(bytes);

The general idea is "bytes in, bytes out". This is the most efficient input and output type to minimise conversions.

You will need to convert your input into bytes, e.g. string to bytes. See example project.

If you want the hash as a hex string you will need to convert it from bytes to hex afterwards. See example project.

Benchmark

How fast is this library? Up to 25% faster than the sha256 and sha. They contain use of Intel's SHA-NI cpu instructions (via a feature flag), whereas this library uses pure rust.

However, the above figures were obtained through some rough benchmarks on only my hardware. More thorough benchmarks are required, YMMV!

// TODO further benchmarks

Links