use password_worker::{Argon2idConfig, BcryptConfig, PasswordWorker};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let password = "hunter2";
let cost = 12;
let max_threads = 8;
let password_worker = PasswordWorker::new_bcrypt(max_threads)?;
let hashed_password = password_worker
.hash(password, BcryptConfig { cost })
.await?;
println!("Hashed password: {:?}", hashed_password);
let is_valid = password_worker.verify(password, hashed_password).await?;
println!("Verification result: {:?}", is_valid);
drop(password_worker);
let salt = "deadbeef".into();
let password_worker = PasswordWorker::new_argon2id(max_threads)?;
let hashed_password = password_worker
.hash(
password,
Argon2idConfig {
salt,
..Default::default()
},
)
.await?;
println!("Hashed password: {:?}", hashed_password);
let is_valid = password_worker.verify(password, hashed_password).await?;
println!("Verification result: {:?}", is_valid);
Ok(())
}