- Notifications
You must be signed in to change notification settings - Fork56
An implementation of Keccak derived functions specified in FIPS-202, SP800-185 and KangarooTwelve
License
NotificationsYou must be signed in to change notification settings
debris/tiny-keccak
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
An implementation of Keccak derived functions specified inFIPS-202
,SP800-185
andKangarooTwelve
.
TheKeccak-f[1600]
permutation is fully unrolled; it's nearly as fastas the Keccak team's optimized permutation.
In yourCargo.toml
specify what features (hash functions, you are intending to use).Available options are:cshake
,fips202
,k12
,keccak
,kmac
,parallel_hash
,sha3
,shake
,sp800
,tuple_hash
.
[dependencies]tiny-keccak = {version ="2.0",features = ["sha3"] }
use tiny_keccak::Sha3;fnmain(){letmut sha3 =Sha3::v256();letmut output =[0u8;32];let expected =b"\\x64\x4b\xcc\x7e\x56\x43\x73\x04\x09\x99\xaa\xc8\x9e\x76\x22\xf3\\xca\x71\xfb\xa1\xd9\x72\xfd\x94\xa3\x1c\x3b\xfb\xf2\x4e\x39\x38\ "; sha3.update(b"hello"); sha3.update(b" "); sha3.update(b"world"); sha3.finalize(&mut output);assert_eq!(expected,&output);}
Benchmarked withrust-crypto sha3 on:
MacBook Pro (Retina, 15-inch, Mid 2015)2,5 GHz Intel Core i716 GB 1600 MHz DDR3Intel Iris Pro 1536 MB
Benchmark code is availablehere
running 4 teststest rust_crypto_sha3_256_input_32_bytes ... bench: 677 ns/iter (+/- 113) = 47 MB/stest rust_crypto_sha3_256_input_4096_bytes ... bench: 17,619 ns/iter (+/- 4,174) = 232 MB/stest tiny_keccak_sha3_256_input_32_bytes ... bench: 569 ns/iter (+/- 204) = 56 MB/stest tiny_keccak_sha3_256_input_4096_bytes ... bench: 17,185 ns/iter (+/- 4,575) = 238 MB/s