Skip to content

Collection of cryptographic hash functions written in pure Rust

Notifications You must be signed in to change notification settings

RustCrypto/hashes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

663 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

RustCrypto: Hashes

Project Chat dependency status Apache2/MIT licensed

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.

Supported Algorithms

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 crates.io Documentation 1.85 πŸ’š
Bash hash bash‑hash crates.io Documentation 1.85 πŸ’š
BelT hash belt‑hash crates.io Documentation 1.85 πŸ’š
BLAKE2 blake2 crates.io Documentation 1.85 πŸ’š
FSB fsb crates.io Documentation 1.85 πŸ’š
GOST R 34.11-94 gost94 crates.io Documentation 1.85 πŸ’›
GrΓΈstl (Groestl) groestl crates.io Documentation 1.85 πŸ’š
JH jh crates.io Documentation 1.85 πŸ’š
KangarooTwelve k12 crates.io Documentation 1.85 πŸ’š
Kupyna kupyna crates.io Documentation 1.85 πŸ’š
MD2 md2 crates.io Documentation 1.85 πŸ’”
MD4 md4 crates.io Documentation 1.85 πŸ’”
MD5 md5 ❗ crates.io Documentation 1.85 πŸ’”
RIPEMD ripemd crates.io Documentation 1.85 πŸ’š
SHA-1 sha1 crates.io Documentation 1.85 πŸ’”
SHA-1 Checked sha1-checked crates.io Documentation 1.85 πŸ’›
SHA-2 sha2 crates.io Documentation 1.85 πŸ’š
SHA-3 (Keccak) sha3 crates.io Documentation 1.85 πŸ’š
SHABAL shabal crates.io Documentation 1.85 πŸ’š
Skein skein crates.io Documentation 1.85 πŸ’š
SM3 (OSCCA GM/T 0004-2012) sm3 crates.io Documentation 1.85 πŸ’š
Streebog (GOST R 34.11-2012) streebog crates.io Documentation 1.85 πŸ’›
Tiger tiger crates.io Documentation 1.85 πŸ’š
Whirlpool whirlpool crates.io Documentation 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.

Security Level Legend

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.

Crate Names

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.

License

All crates in this repository are licensed under either of

at your option.

Contribution

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.