60 lines
1.9 KiB
Rust
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());
|
|
}
|