Add the following to Cargo.toml:
toml
bcrypt = "0.1"
The crate makes 3 things public: DEFAULT_COST
, hash
, verify
.
```rust extern crate bcrypt;
use bcrypt::{DEFAULT_COST, hash, verify};
let hashed = match hash("hunter2", DEFAULTCOST) { Ok(h) => h, Err() => panic!() };
let valid = match verify("hunter2", &hashed) { Ok(valid) => valid, Err(_) => panic!() }; ```
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.
Speed depends on the cost used: the highest the slowest. Here are some benchmarks 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,312,762 ns/iter (+/- 155,397)
test bench_cost_10 ... bench: 80,696,053 ns/iter (+/- 8,290,601)
test bench_cost_default ... bench: 322,494,673 ns/iter (+/- 19,445,864)
test bench_cost_14 ... bench: 1,295,103,136 ns/iter (+/- 83,242,618)
This gist for the hash splitting and the null termination.
0.1.1: make BcryptResult, BcryptError public and update dependencies 0.1.0: initial release