/* * Escribe un programa que sea capaz de generar contraseñas de forma aleatoria. * Podrás configurar generar contraseñas con los siguientes parámetros: * - Longitud: Entre 8 y 16. * - Con o sin letras mayúsculas. * - Con o sin números. * - Con o sin símbolos. * (Pudiendo combinar todos estos parámetros entre ellos) */ use rand::Rng; fn main() { // configurar: let veces = 13; let mayusculas = true; let numeros = true; let simbolos = true; let mut caracteres = String::from_utf8((b'a'..=b'z').collect()).unwrap(); if mayusculas { let string_mayusculas = String::from_utf8((b'A'..=b'Z').collect()).unwrap(); caracteres += string_mayusculas.to_string().as_str(); } if numeros { let string_numeros = String::from_utf8((b'0'..=b'9').collect()).unwrap(); caracteres += string_numeros.to_string().as_str(); } if simbolos { for num in 33..48 { let u8 = num as u8; let caracter = u8 as char; caracteres += caracter.to_string().as_str(); } for num in 58..65 { let u8 = num as u8; let caracter = u8 as char; caracteres += caracter.to_string().as_str(); } for num in 91..97 { let u8 = num as u8; let caracter = u8 as char; caracteres += caracter.to_string().as_str(); } for num in 123..127 { let u8 = num as u8; let caracter = u8 as char; caracteres += caracter.to_string().as_str(); } } println!("Caracteres: {}", caracteres); let mut texto: String = String::new(); for _ in 0..veces { let num = rand::thread_rng().gen_range(0..caracteres.len()); let caracter = caracteres.chars().nth(num).unwrap(); texto += caracter.to_string().as_str(); } println!("{}", texto.to_string()); }