4 releases
0.7.0 | Apr 9, 2020 |
---|---|
0.6.3 | Jan 27, 2020 |
0.6.2 | Jan 27, 2020 |
0.6.1 | Jan 27, 2020 |
#2473 in Cryptography
26KB
574 lines
bcrypt
Installation
Add the following to Cargo.toml:
bcrypt = "0.7"
The minimum Rust version is 1.34.0
Usage
The crate makes 3 things public: DEFAULT_COST
, hash
, verify
.
extern crate bcrypt;
use bcrypt::{DEFAULT_COST, hash, verify};
let hashed = hash("hunter2", DEFAULT_COST)?;
let valid = verify("hunter2", &hashed)?;
The cost needs to be an integer between 4 and 31 (see benchmarks to have an idea of the speed for each), the DEFAULT_COST
is 12.
Benchmarks
Speed depends on the cost used: the highest the slowest. Here are some benchmarks on my 4 years old laptop to give you some ideas on the cost/speed ratio. Note that I don't go above 14 as it takes too long.
test bench_cost_4 ... bench: 1,197,414 ns/iter (+/- 112,856)
test bench_cost_10 ... bench: 73,629,975 ns/iter (+/- 4,439,106)
test bench_cost_default ... bench: 319,749,671 ns/iter (+/- 29,216,326)
test bench_cost_14 ... bench: 1,185,802,788 ns/iter (+/- 37,571,986)
Acknowledgments
This gist for the hash splitting and the null termination.
Changelog
- 0.7.0: add HashParts::from_str and remove Error::description impl, it's deprecated
- 0.6.3: add
hash_with_salt
function and makeVersion::format_for_version
public - 0.6.2: update base64 to 0.12
- 0.6.1: update base64 to 0.11
- 0.6.0: allow users to choose the bcrypt version and default to 2b instead of 2y
- 0.5.0: expose the inner
bcrypt
function + edition 2018 - 0.4.0: make DEFAULT_COST const instead of static
- 0.3.0: forbid NULL bytes in passwords & update dependencies
- 0.2.2: update rand
- 0.2.1: update rand
- 0.2.0: replace rust-crypto with blowfish, use some more modern Rust things like
?
and handle more errors - 0.1.6: update rand and base64 deps
- 0.1.5: update lazy-static to 1.0
- 0.1.4: Replace rustc-serialize dependency with bcrypt
- 0.1.3: Fix panic when password > 72 chars
- 0.1.1: make BcryptResult, BcryptError public and update dependencies
- 0.1.0: initial release
Dependencies
~1.8–2.8MB
~48K SLoC