5 releases
0.1.4 | Mar 3, 2023 |
---|---|
0.1.3 | Nov 3, 2022 |
0.1.2 | Aug 12, 2019 |
0.1.1 | May 16, 2018 |
0.1.0 | May 16, 2018 |
#2119 in Cryptography
8KB
104 lines
Easy password hashing
Supported algorithms:
- Bcrypt
Motivation
Using Bcrypt as is results in passwords being limited to a length of 72. This means it's not easy to salt the password or support arbitrarily long user passwords.
This library performs a HMAC with SHA256 used as the hash function before feeding the result into Bcrypt. As such, any length of password can be used with Bcrypt when passwords are made or verified with this library.
Usage
Hashing a password:
extern crate easy_password;
use easy_password::bcrypt::hash_password;
let bcrypt_rounds = 12; // Secure default
let hash: String =
hash_password("my_password", b"secure_key", 12).unwrap();
Verifying a hash:
extern crate easy_password;
use easy_password::bcrypt::hash_password;
let success: bool =
verify_password("test_password", hash.as_str(), b"secure_key").unwrap();
Linting Code
Install clippy:
rustup component add clippy
To lint the code:
cargo clippy
Apply all suggested refactorings (don't forget to reformat code)
Formatting Code
Note: Currently the nightly version of rustfmt is used for formatting purposes only. The project itself is written and tested on the most current version of stable Rust.
To install rustfmt:
rustup component add rustfmt --toolchain nightly
To format the code:
cargo +nightly fmt
License
MIT License, see LICENSE
Dependencies
~1.5MB
~24K SLoC