2023-05-04 17:34:08 +08:00

35 lines
1.0 KiB
Rust

use scrypt::{
password_hash::{rand_core::OsRng, PasswordHash, PasswordHasher, PasswordVerifier, SaltString},
Params, Scrypt,
};
use std::time::SystemTime;
fn main() {
let password = b"hunter42"; // Bad password; don't actually use!
let start = SystemTime::now();
let salt = SaltString::generate(&mut OsRng);
println!("salt: {}", salt);
// Hash password to PHC string ($scrypt$...)
let param = Params::new(13, 8, 1, 32).unwrap();
let password_hash = Scrypt
.hash_password_customized(password, None, None, param, &salt)
.unwrap()
.to_string();
print!("password_hash: {}", password_hash);
println!(
"Elapsed time: {:?}",
SystemTime::now().duration_since(start)
);
// Verify password against PHC string
let parsed_hash = PasswordHash::new(&password_hash).unwrap();
assert!(Scrypt.verify_password(password, &parsed_hash).is_ok());
println!(
"Elapsed time: {:?}",
SystemTime::now().duration_since(start)
);
}