tiny-keccak 1.0.3

An implementation of the FIPS-202-defined SHA-3 and SHAKE functions.
Documentation

libkeccak-tiny

An implementation of the FIPS-202-defined SHA-3 and SHAKE functions.

The Keccak-f[1600] permutation is fully unrolled; it's nearly as fast as the Keccak team's optimized permutation.

Building

cargo build

Usage

Add this to your Cargo.toml:

[dependencies]
tiny-keccak = "1.0"

and this to your crate root:

extern crate tiny_keccak;

Example

extern crate tiny_keccak;
use tiny_keccak::Keccak;
 
fn main() {
    let mut sha3 = Keccak::new_sha3_256();
    let data: Vec<u8> = From::from("hello");
    let data2: Vec<u8> = From::from("world");
    
    sha3.update(&data);
    sha3.update(&[b' ']);
    sha3.update(&data2);

    let mut res: [u8; 32] = [0; 32];
    sha3.finalize(&mut res);

    let expected = vec![
        0x64, 0x4b, 0xcc, 0x7e, 0x56, 0x43, 0x73, 0x04,
        0x09, 0x99, 0xaa, 0xc8, 0x9e, 0x76, 0x22, 0xf3,
        0xca, 0x71, 0xfb, 0xa1, 0xd9, 0x72, 0xfd, 0x94,
        0xa3, 0x1c, 0x3b, 0xfb, 0xf2, 0x4e, 0x39, 0x38
    ];

    let ref_ex: &[u8] = &expected;
    assert_eq!(&res, ref_ex);
}