Collection of cryptographic hash functions written in pure Rust.
All algorithms reside in separate crates and are implemented using traits from digest crate.
Usage examples are provided in digest and hash implementation crate docs.
Additionally all crates do not require the standard library (i.e. no_std capable) and can be
easily used for bare-metal or WebAssembly programming by disabling default crate features.
Note: For new applications, or where compatibility with other existing standards is not a primary concern, we strongly recommend to use either BLAKE3, SHA-2 or SHA-3.
| Algorithm | Crate | Crates.io | Documentation | MSRV | Security |
|---|---|---|---|---|---|
| Ascon hash | asconβhash256 |
1.85 | π | ||
| Bash hash | bashβhash |
1.85 | π | ||
| BelT hash | beltβhash |
1.85 | π | ||
| BLAKE2 | blake2 |
1.85 | π | ||
| FSB | fsb |
1.85 | π | ||
| GOST R 34.11-94 | gost94 |
1.85 | π | ||
| GrΓΈstl (Groestl) | groestl |
1.85 | π | ||
| JH | jh |
1.85 | π | ||
| KangarooTwelve | k12 |
1.85 | π | ||
| Kupyna | kupyna |
1.85 | π | ||
| MD2 | md2 |
1.85 | π | ||
| MD4 | md4 |
1.85 | π | ||
| MD5 | md5 β |
1.85 | π | ||
| RIPEMD | ripemd |
1.85 | π | ||
| SHA-1 | sha1 |
1.85 | π | ||
| SHA-1 Checked | sha1-checked |
1.85 | π | ||
| SHA-2 | sha2 |
1.85 | π | ||
| SHA-3 (Keccak) | sha3 |
1.85 | π | ||
| SHABAL | shabal |
1.85 | π | ||
| Skein | skein |
1.85 | π | ||
| SM3 (OSCCA GM/T 0004-2012) | sm3 |
1.85 | π | ||
| Streebog (GOST R 34.11-2012) | streebog |
1.85 | π | ||
| Tiger | tiger |
1.85 | π | ||
| Whirlpool | whirlpool |
1.85 | π |
NOTE: the blake3 crate implements the digest traits used by the rest of the hashes in this repository, but is maintained by the BLAKE3 team.
The following describes the security level ratings associated with each hash function (i.e. algorithms, not the specific implementation):
| Heart | Description |
|---|---|
| π | No known successful attacks |
| π | Theoretical break: security lower than claimed |
| π | Attack demonstrated in practice: avoid if at all possible |
See the Security page on Wikipedia for more information.
Whenever possible crates are published under the same name as the crate folder.
Owners of md5 declined to participate in this project.
This crate does not implement the digest traits, so it is not interoperable with the RustCrypto ecosystem.
This is why we publish our MD5 implementation as md-5 and mark it with the β mark.
Note that the library itself is named as md5, i.e. inside use statements you should use md5, not md_5.
All crates in this repository are licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.