hash_password.rs
53 lignes · 1511 octets
//! Utility to hash passwords using bcrypt //! //! This tool generates bcrypt hashes for passwords, useful for: //! - Manual database operations //! - Password reset scripts //! - Testing and development //! //! Usage: //! cargo run --bin hash_password -- "MyPassword123" //! cargo run --bin hash_password -- "MyPassword123" 12 use std::env; fn main() { let args: Vec<String> = env::args().collect(); if args.len() < 2 { eprintln!("Usage: {} <password> [cost]", args[0]); eprintln!(); eprintln!("Arguments:"); eprintln!(" <password> The password to hash"); eprintln!(" [cost] BCrypt cost (default: 12, recommended: 10-14)"); eprintln!(); eprintln!("Examples:"); eprintln!(" {} 'MyPassword123'", args[0]); eprintln!(" {} 'MyPassword123' 12", args[0]); std::process::exit(1); } let password = &args[1]; let cost = if args.len() >= 3 { args[2].parse::<u32>().unwrap_or(12) } else { 12 }; // Validate cost (bcrypt accepts 4-31, but 10-14 is recommended) if !(4..=31).contains(&cost) { eprintln!("Error: Cost must be between 4 and 31 (recommended: 10-14)"); std::process::exit(1); } // Hash the password match bcrypt::hash(password, cost) { Ok(hash) => { println!("{}", hash); } Err(e) => { eprintln!("Error hashing password: {}", e); std::process::exit(1); } } }
GitRust