// src/utils/password.rs use argon2::{ password_hash::{rand_core::OsRng, PasswordHash, PasswordHasher, PasswordVerifier, SaltString}, Algorithm, Argon2, Params, Version, }; /// Hache un password avec Argon2id /// Génère automatiquement un salt cryptographiquement sûr pub fn hash_password(password: &str) -> Result { let salt = SaltString::generate(OsRng); let params = Params::new(65540, 18, 1, None)?; let argon2 = Argon2::new(Algorithm::Argon2id, Version::V0x13, params); argon2 .hash_password(password.as_bytes(), &salt) .map(|hash| hash.to_string()) } /// Vérifie un password contre son hash pub fn verify_password(password: &str, hash: &str) -> Result { let parsed_hash = PasswordHash::new(hash)?; let argon2 = Argon2::default(); Ok(argon2 .verify_password(password.as_bytes(), &parsed_hash) .is_ok()) }