rs_shake128 0.1.2

`rs_shake128` is a Rust implementation of the SHAKE128 cryptographic hash algorithm, part of the larger `rs_shield` project. This package provides SHAKE128 hashing functionality in a standalone manner, ideal for when only SHAKE128 is required. Alternatively, for those seeking a comprehensive set of cryptographic functions, this same algorithm is included within the broader `rs_shield` library bundle. The focus of `rs_shake128` and the larger project is on performance, safety, and openness, with a commitment to ongoing maintenance and enhancement.
Documentation
extern crate alloc;
use crate::Shake128Hasher;
use alloc::format;
use core::hash::Hasher;
use rs_hasher_ctx::HasherContext;

const MSG: &[u8; 43] = b"The quick brown fox jumps over the lazy dog";

#[test]
fn test() {
    let mut shake128hasher = Shake128Hasher::<32>::default();

    shake128hasher.write(MSG);
    shake128hasher.write(MSG);
    shake128hasher.write(MSG);
    shake128hasher.write(MSG);
    shake128hasher.write(MSG);

    let u64result = shake128hasher.finish();
    assert_eq!(u64result, 0x1231F30042740A25)
}

#[test]
fn test2() {
    let mut shake128hasher = Shake128Hasher::<32>::default();

    shake128hasher.write(MSG);

    let context = HasherContext::finish(&mut shake128hasher);
    assert_eq!(
        context,
        [
            244, 32, 46, 60, 88, 82, 249, 24, 42, 4, 48, 253, 129, 68, 240, 167, 75, 149, 231, 65, 126, 202, 225, 125,
            176, 248, 207, 238, 208, 227, 230, 110
        ]
    );
}

#[test]
fn assert_abc_output() {
    let mut shake128hasher = Shake128Hasher::<10>::default();

    shake128hasher.write(b"abc");

    let output = HasherContext::finish(&mut shake128hasher);

    assert_eq!(format!("{output:02x}"), "5881092dd818bf5cf8a3");
}