about summary refs log tree commit diff
path: root/examples/password-hasher.rs
diff options
context:
space:
mode:
authorVika <vika@fireburn.ru>2023-07-29 21:59:56 +0300
committerVika <vika@fireburn.ru>2023-07-29 21:59:56 +0300
commit0617663b249f9ca488e5de652108b17d67fbaf45 (patch)
tree11564b6c8fa37bf9203a0a4cc1c4e9cc088cb1a5 /examples/password-hasher.rs
parent26c2b79f6a6380ae3224e9309b9f3352f5717bd7 (diff)
Moved the entire Kittybox tree into the root
Diffstat (limited to 'examples/password-hasher.rs')
-rw-r--r--examples/password-hasher.rs33
1 files changed, 33 insertions, 0 deletions
diff --git a/examples/password-hasher.rs b/examples/password-hasher.rs
new file mode 100644
index 0000000..f11c591
--- /dev/null
+++ b/examples/password-hasher.rs
@@ -0,0 +1,33 @@
+use std::io::Write;
+
+use argon2::{Argon2, password_hash::{rand_core::OsRng, PasswordHasher, PasswordHash, PasswordVerifier, SaltString}};
+
+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(())
+}