This repository has been archived on 2023-10-18. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
curso_rust_tinchicus/ejercicios/reto03/src/main.rs
2023-06-15 10:45:23 +02:00

60 lines
1.9 KiB
Rust

/*
* 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());
}