A Rust implementation of Keccak-derived hash functions including SHA-3, SHAKE, cSHAKE, KMAC, and KangarooTwelve.
tiny-keccak is a Rust library that implements Keccak-derived cryptographic hash functions, including SHA-3, SHAKE, cSHAKE, KMAC, and KangarooTwelve. It provides a performant and standards-compliant solution for secure hashing, message authentication, and extendable-output functions in Rust projects.
Rust developers and cryptographers who need reliable implementations of SHA-3 family algorithms, KMAC authentication, or KangarooTwelve for applications requiring cryptographic hashing.
It offers a feature-gated, modular design that allows compiling only needed functions, along with a fully unrolled Keccak permutation that delivers competitive performance compared to other implementations.
An implementation of Keccak derived functions specified in FIPS-202, SP800-185 and KangarooTwelve
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Benchmarks in the README show it competes with rust-crypto, achieving 238 MB/s for SHA3-256 on 4096-byte inputs, thanks to a fully unrolled Keccak permutation.
Users can compile only needed functions via Cargo.toml features like 'sha3' or 'k12', reducing binary size and dependencies, as demonstrated in the usage example.
Implements NIST standards FIPS-202 and SP800-185, providing SHA-3, SHAKE, cSHAKE, KMAC, ParallelHash, and TupleHash for reliable cryptographic operations.
Offers the fast, parallelizable KangarooTwelve algorithm as a modern alternative, catering to applications needing efficient hashing beyond traditional SHA-3.
Focuses solely on Keccak-derived functions, so projects requiring other hashes like MD5 or SHA-256 must integrate additional libraries, increasing complexity.
Requires manual feature selection in Cargo.toml, which can be error-prone for developers unfamiliar with the library's modular structure, leading to setup frustrations.
The README provides basic examples but lacks in-depth tutorials or API guides, potentially steepening the learning curve for non-expert users.