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) ); }