[][src]Crate djangohashers

A Rust port of the password primitives used in Django Project.

Django's django.contrib.auth.models.User class has a few methods to deal with passwords, like set_password() and check_password(); DjangoHashers implements the primitive functions behind that methods. All Django's built-in hashers are supported.

This library was conceived for Django integration, but is not limited to it; you can use the password hash algorithm in any Rust project (or FFI integration), since its security model is already battle-tested.

Structs

Argon2Hasher

Hasher that uses the Argon2 function (new in Django 1.10).

BCryptHasher

Hasher that uses the bcrypt key-derivation function without password padding.

BCryptSHA256Hasher

Hasher that uses the bcrypt key-derivation function with the password padded with SHA256.

CryptHasher

Hasher that uses the UNIX's crypt(3) hash function.

Django

Abstraction that exposes the functions that generates passwords compliant with different Django versions.

MD5Hasher

Hasher that uses the MD5 hashing function over the salted password.

PBKDF2Hasher

Hasher that uses the PBKDF2 key-derivation function with the SHA256 hashing algorithm.

PBKDF2SHA1Hasher

Hasher that uses the PBKDF2 key-derivation function with the SHA1 hashing algorithm.

SHA1Hasher

Hasher that uses the SHA1 hashing function over the salted password.

UnsaltedMD5Hasher

Hasher that uses the MD5 hashing function with no salting.

UnsaltedSHA1Hasher

Hasher that uses the SHA1 hashing function with no salting.

VALID_SALT_RE

Enums

Algorithm

Algorithms available to use with Hashers.

DjangoVersion

Django Version.

HasherError

Possible errors during a hash creation.

Traits

Hasher

Hasher abstraction, providing methods to encode and verify hashes.

Functions

check_password

Verifies a password against an encoded hash, returns a Result.

check_password_tolerant

Verifies a password against an encoded hash, returns a boolean, even in case of error.

is_password_usable

Verifies if an encoded hash is properly formatted before check it cryptographically.

make_password

Based on the current Django version, generates an encoded hash given only a password, uses a random salt and the PBKDF2 algorithm.

make_password_core

Core function that generates all combinations of passwords:

make_password_with_algorithm

Based on the current Django version, generates an encoded hash given a password and algorithm, uses a random salt.

make_password_with_settings

Based on the current Django version, generates an encoded hash given a complete set of parameters: password, salt and algorithm.