use rand::{thread_rng, Rng};
use rand::distributions::Alphanumeric;
use std::io;
fn main() {
println!("Bienvenue dans le générateur de mot de passe.");
println!("Entrez la longueur souhaitée pour le mot de passe (minimum 6) :");
// Lire la longueur souhaitée
let longueur = loop {
let mut input = String::new();
io::stdin()
.read_line(&mut input)
.expect("Erreur lors de la lecture.");
match input.trim().parse::<usize>() {
Ok(value) if value >= 6 => break value,
_ => println!("Veuillez entrer un nombre entier valide (minimum 6)."),
}
};
// Générer le mot de passe
let mot_de_passe = generer_mot_de_passe(longueur);
// Afficher le mot de passe
println!("Votre mot de passe généré est : {}", mot_de_passe);
}
fn generer_mot_de_passe(longueur: usize) -> String {
// Ensemble de caractères utilisables
let lettres_majuscules = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
let lettres_minuscules = "abcdefghijklmnopqrstuvwxyz";
let chiffres = "0123456789";
let symboles = "!@#$%^&*()";
let mut ensemble = String::new();
ensemble.push_str(lettres_majuscules);
ensemble.push_str(lettres_minuscules);
ensemble.push_str(chiffres);
ensemble.push_str(symboles);
let mut rng = thread_rng();
let mot_de_passe: String = (0..longueur)
.map(|_| {
let idx = rng.gen_range(0..ensemble.len());
ensemble.chars().nth(idx).unwrap()
})
.collect();
mot_de_passe
}
Lecture de l'entrée utilisateur
Une boucle assure que l'utilisateur entre un nombre valide supérieur ou égal à 6.
Ensemble de caractères
Les caractères disponibles sont regroupés dans une chaîne combinée.
Génération du mot de passe
La méthode rng.gen_range() sélectionne un indice aléatoire dans l'ensemble.
Chaque caractère est collecté dans une boucle pour générer un mot de passe de la longueur souhaitée.
Affichage
Le mot de passe généré est affiché au format texte.
Personnalisation : Ajoutez des options pour inclure/exclure certains types de caractères (par ex. pas de symboles).
Équilibre des caractères : Assurez-vous qu'il y ait au moins une lettre, un chiffre et un symbole.
Options avancées : Proposez différents niveaux de complexité pour le mot de passe.
Sauvegarde sécurisée : Permettez d'enregistrer le mot de passe généré dans un fichier chiffré.
Cet exercice est parfait pour pratiquer l'utilisation de bibliothèques externes, les générateurs aléatoires, et les chaînes de caractères ! 😊