A collection of cryptographic hash functions implemented in pure Rust, designed for interoperability and no_std environments.
RustCrypto: Hashes is a comprehensive collection of cryptographic hash functions implemented in pure Rust. It provides a standardized, interoperable set of algorithms for developers needing secure hashing in Rust applications, from embedded systems to web services. The project emphasizes cryptographic correctness, interoperability through standardized traits, and accessibility for constrained environments while maintaining comprehensive algorithm coverage for compatibility needs.
Rust developers who need cryptographic hashing in their applications, particularly those working in embedded systems, bare-metal environments, WebAssembly, or any context requiring no_std compatibility. It also serves developers needing a wide range of hash algorithms for compatibility with existing standards or specialized use cases.
Developers choose RustCrypto: Hashes for its extensive algorithm support (over 20 hash functions), standardized APIs via the `digest` crate traits ensuring ecosystem interoperability, and its no_std capability for use in constrained environments. The project provides clear security ratings and modern recommendations, helping developers make informed choices.
Collection of cryptographic hash functions written in pure Rust
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements over 20 hash functions, including SHA-2, SHA-3, BLAKE2, and specialized algorithms like SM3 and Streebog, as detailed in the README table.
All algorithms use standardized traits from the `digest` crate, ensuring consistent APIs and seamless integration across the RustCrypto ecosystem.
Every crate is no_std capable, enabling use in bare-metal, embedded, and WebAssembly environments by disabling default features, as stated in the README.
Each algorithm includes a security assessment (green/yellow/broken heart) based on current cryptographic research, helping developers avoid broken algorithms like MD5 or SHA-1.
Provides explicit guidance for new applications, recommending BLAKE3, SHA-2, or SHA-3, promoting secure defaults and best practices.
The MD5 implementation is published as 'md-5' due to a namespace conflict, which can cause confusion and requires careful attention in use statements, as noted in the README.
BLAKE3, a recommended modern hash, is maintained separately by the BLAKE3 team and not integrated into the core repository, potentially complicating updates and consistency.
Each hash function is a separate crate, increasing dependency management overhead compared to a unified library, which might be cumbersome for simple projects.
Focuses solely on raw hash functions without built-in support for constructs like HMAC or password hashing, requiring additional crates from the RustCrypto ecosystem.