use std::io::Write; use argon2::{ password_hash::{rand_core::OsRng, PasswordHash, PasswordHasher, PasswordVerifier, SaltString}, Argon2, }; fn main() -> std::io::Result<()> { eprint!("Type a password: "); std::io::stderr().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(); //eprintln!("{}", 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(()) }