Expand description

RustCrypto: Password Hashing Traits

crate Docs Build Status Apache2/MIT licensed Rust Version Project Chat

Traits which describe the functionality of password hashing algorithms.



Provides a no_std-friendly implementation of the Password Hashing Competition (PHC) string format specification (a well-defined subset of the Modular Crypt Format a.k.a. MCF) which works in conjunction with the traits this crate defines.

Supported Crates

See RustCrypto/password-hashes for algorithm implementations which use this crate for interoperability:

  • argon2 - Argon2 memory hard key derivation function
  • pbkdf2 - Password-Based Key Derivation Function v2
  • scrypt - scrypt key derivation function

Minimum Supported Rust Version

Rust 1.57 or higher.

Minimum supported Rust version may be changed in the future, but it will be accompanied by a minor version bump.

SemVer Policy

  • All on-by-default features of this library are covered by SemVer
  • MSRV is considered exempt from SemVer as noted above


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.


This crate represents password hashes using the PasswordHash type, which represents a parsed “PHC string” with the following format:


For more information, please see the documentation for PasswordHash.


Error types.
Random number generation traits


Algorithm or parameter identifier.
Output from password hashing functions, i.e. the “hash” or “digest” as raw bytes.
Algorithm parameter string.
Password hash.
Salt string.
Owned stack-allocated equivalent of Salt.
Algorithm parameter value string.


Base64 encoding variants.
Password hashing errors.


Trait for password hashing algorithms which support the legacy Modular Crypt Format (MCF).
Trait for password hashing functions.
Trait for password verification.

Type Definitions

Type used to represent decimal (i.e. integer) values.
Result type.