use std::io::Write; use argon2::{Argon2, password_hash::{rand_core::OsRng, PasswordHasher, PasswordHash, PasswordVerifier, SaltString}}; fn main() -> std::io::Result<()> { print!("Type a password: "); std::io::stdout().flush().unwrap(); let password = { let mut s = String::new(); std::io::stdin().read_line(&mut s)?; s }; let salt = SaltString::generate(&mut OsRng); let argon2 = Argon2::default(); println!("{}", password.trim()); let password_hash = argon2.hash_password(password.trim().as_bytes(), &salt) .expect("Hashing a password should not error out") .serialize(); println!("{}", password_hash.as_str()); assert!(Argon2::default() .verify_password( password.trim().as_bytes(), &PasswordHash::new(password_hash.as_str()) .expect("Password hash should be valid") ).is_ok() ); Ok(()) }