(Creado por el analista de sistemas y docente Leonel Iván Saafigueroa)
GENERADOR DE CONTRASEÑAS
Una contraseña segura es aquella que no puede ser adivinada por otra persona o programas automáticos. Vamos a crear varios programas que ayuden a generarlas automáticamente.

Una contraseña es tan importante como la información que protege. La contraseña es como un candado o como una cerradura, con ellas cuidamos de nuestra información privada, no es que ocultemos cosas prohibidas, todos tenemos información que proteger, pero no siempre sabemos hacerlo bien.
Generar una contraseña segura no es tarea fácil, en esta sección veremos cómo poder crear contraseñas al azar, siendo estas las más difíciles de recordar y adivinar.

Vamos a crear un programa que permita generar una contraseña numérica de 8 dígitos:

Estas contraseñas no son las más seguras, aunque muchas veces son necesarias, crearemos el programa utilizando un arreglo llamado code de 8 dimensiones, en cada una de ellas gracias a una estructura para, asignaremos un número aleatorio del 0 al 9 utilizando la función aleatorio, para luego mostrar en pantalla las 8 dimensiones del arreglo formando así un número con una combinación numérica de 8 dígitos.
Analizamos el código
Algoritmo generador Escribir "Generando contraseña numérica..." // Declaramos un arreglo de 8 dimensiones llamado code. Dimension code[8] Para i <- 1 hasta 8 Con Paso 1 Hacer code[i] <- aleatorio(0,9) FinPara // Mostramos las 8 dimensiones del arreglo formando un número de 8 dígitos. Escribir code[1],code[2],code[3],code[4],code[5],code[6],code[7],code[8] FinAlgoritmo
Ejecutamos el programa
Veamos el código en C++:
// GENERADOR.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int code[8];
int i;
int main()
{
cout << "Generando contraseña numérica..." << endl;
srand(time(NULL)); // Iniciamos la semilla random con la hora.
for(i=0;i<8;i++)
{
code[i] = rand() % 10; // Genera un valor entre 0 y 9.
}
// Mostramos las 8 dimensiones del arreglo formando un número de 8 dígitos.
cout << endl << code[0] << code[1] << code[2] << code[3] << code[4] << code[5] << code[6] << code[7] << endl;
return 0;
}
Vamos a analizar línea por línea este código en C++:
Línea 1: // GENERADOR.
- La comilla de múltiples líneas (
//) es utilizada para indicar un comentario en C++, lo que significa que se ignora por la ejecución del programa. - El texto “GENERADOR.” es una descripción o título del programa.
Línea 3: #include <iostream>
- La palabra clave
#includees utilizada para incluir cabecera de biblioteca en el programa, y en este caso, estamos incluyendo la biblioteca iostream (entrada/salida estándar). - La biblioteca iostream proporciona funciones como cout y cin para leer y escribir datos.
Línea 4: #include <cstdlib>
- Se está incluyendo la biblioteca cstdlib, que contiene funciones de generación de números aleatorios (como rand()).
- La biblioteca cstdlib es necesaria para utilizar las funciones de generación de números aleatorios.
Línea 5: #include <ctime>
- Se está incluyendo la biblioteca time, que proporciona funciones relacionadas con el tiempo y la fecha.
- En este caso, estamos utilizando la función time() para obtener la hora actual como semilla para la generación de números aleatorios.
Línea 7: using namespace std;
- Se está indicando que se utilizará el espacio de nombres std (estándar) para acceder a las funciones y variables declaradas en esa biblioteca.
- Esto permite evitar escribir explícitamente el nombre del espacio de nombres cada vez que se utilice una función o variable.
Línea 9: int code[8];
- Se está declarando un arreglo de enteros de tamaño 8, llamado “code“.
- El arreglo será utilizado para almacenar los dígitos de la contraseña numérica generada.
Línea 10: int i;
- Se está declarando una variable entera, llamada “i“, que se utilizará como índice del arreglo “code“.
Línea 12: int main() { ... }
- Se está declarando la función principal del programa, llamada “main“.
- La función main es el punto de entrada del programa y siempre debe ser definida.
Línea 14: cout << "Generando contraseña numérica..." << endl;
- Se está utilizando la función cout para imprimir un mensaje en la pantalla.
- El texto entre comillas es el mensaje que se mostrará.
- El carácter “\n” (new line) es utilizado para saltar a la siguiente línea.
Línea 16: srand(time(NULL));
- Se está utilizando la función srand() para establecer la semilla para la generación de números aleatorios.
- La función time() devuelve la hora actual en segundos como valor entero, y se pasa directamente a la función srand().
- Esto significa que cada vez que el programa se ejecuta, obtendrá una nueva semilla aleatoria.
Línea 18-21: for(i=0;i<8;i++) { ... }
- Se está utilizando un bucle for para iterar sobre los elementos del arreglo “code“.
- El bucle iniciará desde el elemento con índice 0 (cero) y terminará en el elemento con índice 7.
- Dentro del bucle, se generará un valor aleatorio entre 0 y 9 (inclusive) para cada elemento del arreglo.
Línea 16: code[i] = rand() % 10;
- Se está utilizando la función rand() para generar un número aleatorio entre 0 y RAND_MAX (un valor máximo determinado por la biblioteca).
- El operador “%” es utilizado para obtener el resto de la división del resultado de rand() por 10.
- Esto significa que se obtendrá un valor aleatorio entre 0 y 9.
Línea 24: cout << endl << code[0] << code[1] << code[2] << code[3] << code[4] << code[5] << code[6] << code[7] << endl;
- Se está utilizando la función cout para imprimir los elementos del arreglo “code” en forma de número de 8 dígitos.
- El carácter “\n” (new line) es utilizado para saltar a la siguiente línea.
Línea 25: return 0;
Se está indicando que el programa ha terminado correctamente y devuelve un valor entero igual a cero.
Ahora el código en PYTHON:
# GENERADOR1.
import random
code = ""
print("Generando contraseña numérica...\n")
for i in range(0, 8):
code += str(random.randint(0, 9))
print(code)
Vamos a analizar línea por línea este código en PYTHON:
Línea 1: # GENERADOR1.
- Esta es una comilla de múltiples líneas (
#) seguida del texto “GENERADOR1.“. Es un comentario en Python, lo que significa que se ignora por la ejecución del programa. En este caso, se está utilizando como título o descripción del programa.
Línea 3: import random
- La palabra clave
importes utilizada para traer una biblioteca o módulo de Python dentro del script actual. En este caso, estamos importando la bibliotecarandom, que permite generar números aleatorios. - La sintaxis
import nombre_bibliotecaes la forma correcta de importar una biblioteca en Python.
Línea 5: code = ""
- Se está creando una variable llamada
codey se le asigna un valor vacío (""). Esto significa quecodees una cadena de texto vacía, lista para ser modificada. - En Python, las cadenas se delimitan con comillas dobles o simples.
Línea 7: print("Generando contraseña numérica...\n")
- La función
print()se utiliza para imprimir mensajes en la consola. En este caso, se está imprimiendo el mensaje “Generando contraseña numérica…” seguido de un salto de línea (\n). - El
\nes un escape caracter que representa un salto de línea.
Línea 9: for i in range(0, 8):
- La estructura de control
forse utiliza para iterar sobre una secuencia de valores. En este caso, estamos iterando desde el valor 0 hasta el valor 8 (inclusive). - El
range()función devuelve una secuencia de números enteros que comienzan en el primer argumento y terminan en el segundo argumento. - La variable
ies un índice que se utiliza para acceder a cada elemento de la secuencia.
Línea 10: code += str(random.randint(0, 9))
- Dentro del bucle
for, estamos utilizando la expresiónrandom.randint(0, 9)para generar un número aleatorio entre 0 y 9 (inclusive). - La función
str()se utiliza para convertir el valor numérico en una cadena de texto. - La sintaxis
code += ...es equivalente acode = code + .... En este caso, estamos concatenando la nueva cadena generada con la cadena existente encode.
Línea 12: print(code)
- Después de generar la contraseña numérica mediante el bucle
for, se imprime la cadena completa en la consola.
En resumen, este programa utiliza la biblioteca random para generar una contraseña numérica aleatoria de longitud 8 y la imprime en la consola.
Ahora creamos una segunda versión del programa que nos permita elegir la cantidad de dígitos:

Esta segunda versión del generador nos permite ingresar la longitud de la contraseña, ese valor se guardará en la variable L, luego dejamos de lado el arreglo para utilizar una cadena vacía asignada a la variable code, una estructura para, que irá desde 1 hasta el valor de la variable L, concatenando a la variable code los distintos números elegidos al azar del 0 a 9, haciendo uso de las funciones concatenar y convertiratexto, esta última evitará tener problemas con los tipos de datos. Por último, se muestra como resultado el contenido de la variable code.
Analizamos el código
Algoritmo generador2 Escribir 'Ingresar la longitud de la contraseña:' Leer L // Iniciamos una variable con una cadena vacía. code <- '' Escribir 'Generando contraseña numérica...' Para i<-1 Hasta L Con Paso 1 Hacer // Concatenamos números aleatorios del 0 al 9 con la longitud requerida. code <- concatenar(code,(convertiratexto(aleatorio(0,9)))) FinPara // Mostramos el código resultante de la concatenación guardada en la variable code. Escribir code FinAlgoritmo
Ejecutamos el programa
Veamos el código en C++:
// GENERADOR2.
#include <iostream>
#include <string>
#include <cstdlib> // para utilizar rand() y srand()
#include <ctime> // Para plantar la semilla aleatoria.
using namespace std;
int main() {
int longitud; // longitud de la contraseña
string code = ""; // cadena vacía donde se almacenará el código numérico
cout << "Ingresar la longitud de la contraseña: ";
cin >> longitud;
cout << "Generando contraseña numérica..." << endl;
srand(time(NULL)); // Iniciamos la semilla random con la hora.
for (int i = 0; i < longitud; i++) {
int numeroAleatorio = rand() % 10; // generar un número aleatorio del 0 al 9
string numeroString = to_string(numeroAleatorio); // convertir a string el número aleatorio
code += numeroString; // concatenar el número aleatorio a la cadena code
}
cout << endl << code << endl;
return 0;
}
Vamos a analizar línea por línea este código en C++:
Línea 1: // GENERADOR2.
- Esta es una línea de comentario, indicando que se trata del segundo generador de contraseñas.
Líneas 3-6: #include <iostream>, #include <string> y #include <cstdlib> (y después) #include <ctime>
- Estas son instrucciones para incluirlas bibliotecas estandar de C++:
<iostream>: Permite la entrada y salida de datos desde el teclado y pantalla.<string>: Proporciona una clase llamadastd::stringpara manejar cadenas de texto.<cstdlib>(y después)<ctime>: Estas bibliotecas permiten utilizar funciones de randomización (rand()ysrand()) y obtener la hora actual para plantar la semilla aleatoria.
Línea 8: using namespace std;
- Esta línea declara que se utilizará el espacio de nombres
stdpor defecto. Esto significa que no es necesario especificarstd::antes de usar funciones o clases comocout,cin,string, etc.
Líneas 11-12: int longitud; y string code = "";
- Estas dos líneas declaran variables:
longitud: una variable entera para almacenar la longitud de la contraseña.code: una cadena vacía (una variable de tipostd::string) donde se almacenará el código numérico generado.
Línea 14: cout << "Ingresar la longitud de la contraseña: ";
- Esta línea imprime un mensaje en la pantalla solicitando al usuario que ingrese la longitud de la contraseña.
- La función
coutes una forma de salida de datos en el teclado y pantalla.
Línea 15: cin >> longitud;
- Esta línea lee un valor entero desde el teclado y lo asigna a la variable
longitud. - La función
cines una forma de entrada de datos desde el teclado.
Línea 17: cout << "Generando contraseña numérica..." << endl;
- Estas dos líneas imprimen un mensaje en la pantalla indicando que se está generando una contraseña numérica.
- La función
endles una forma de saltar a la siguiente línea en el flujo de salida.
Línea 19: srand(time(NULL));
- Esta línea inicia la semilla aleatoria con la hora actual obtenida mediante la función
time(NULL). Esto garantiza que se generen números aleatorios diferentes cada vez que se ejecuta el programa. - La función
rand()es una forma de generar un número entero pseudoaleatorio.
Línea 21: for (int i = 0; i < longitud; i++)
- Esta línea inicia un bucle
forque se repetirá mientrasisea menor que la longitud ingresada por el usuario. - La variable
ies una cuenta de iteración para controlar cuántas veces se repite el bucle.
Línea 22: int numeroAleatorio = rand() % 10;
- Esta línea genera un número aleatorio entre 0 y 9 (inclusive) mediante la función
rand()y lo almacena en la variablenumeroAleatorio. - La expresión
% 10es una forma de obtener el resto de la división por 10.
Línea 23: string numeroString = to_string(numeroAleatorio);
- Esta línea convierte el número entero aleatorio a un string utilizando la función
to_string(). - El resultado se almacena en la variable
numeroString.
Línea 25: code += numeroString; y cout << endl << code << endl;
- Estas dos líneas concatenan el número aleatorio convertido a string a la cadena vacía
code. - La función
coutimprime el resultado en la pantalla.
Linea 30: return 0;
Esta línea indica que el programa ha terminado ejecutarse correctamente. El valor de retorno es cero, lo cual significa que no hubo errores durante la ejecución.
Ahora el código en PYTHON:
# GENERADOR2.
import random
longitud = int(input("Ingresar la longitud de la contraseña: "))
print("Generando contraseña numérica...")
code = ""
for i in range(longitud):
numero_aleatorio = str(random.randint(0, 9))
code += numero_aleatorio
print(code)
Vamos a analizar línea por línea este código en PYTHON:
Línea 1: # GENERADOR2.
- La comilla de múltiples líneas (
#) es utilizada para indicar un comentario en Python, lo que significa que se
ignora por la ejecución del programa. - El texto “GENERADOR2.” es una descripción o título del programa.
Línea 2: import random
- La palabra clave
importes utilizada para importar módulos de Python dentro del archivo actual. - En este caso, estamos importando el módulo
random, que proporciona funciones para generar números aleatorios. - El módulo
randomse utiliza para generar contraseñas numéricas aleatorias.
Línea 4: longitud = int(input("Ingresar la longitud de la contraseña: "))
- Se está declarando una variable llamada
longitudy asignándole un valor. - La función
input()es utilizada para solicitar al usuario que ingrese un valor. - El valor ingresado por el usuario se convierte a entero mediante la función
int(), ya que la longitud de la contraseña debe ser un número entero. - La variable
longitudalmacenará el tamaño de la contraseña numérica generada.
Línea 6: print("Generando contraseña numérica...")
- Se está utilizando la función
print()para imprimir un mensaje en la pantalla, indicando que se está generando la contraseña numérica. - El mensaje es una cadena de texto que se imprime sin modificar.
Línea 8: code = ""
- Se está declarando una variable llamada
codey asignándole un valor inicializado a vacío (""). - La variable
codealmacenará la contraseña numérica generada. - El valor inicializado a vacío indica que la contraseña es aún vacía.
Línea 10: for i in range(longitud):
- Se está utilizando la estructura de control
forpara iterar sobre el rango de valores desde 0 hasta el tamaño de la contraseña numérica (longitud) inclusive. - La variable
ies un índice que se utiliza para acceder a cada elemento del rango.
Línea 11: numero_aleatorio = str(random.randint(0, 9))
- Se está generando un número aleatorio entre 0 y 9 (inclusive) utilizando la función
random.randint(). - El valor generado se convierte a cadena de texto mediante la función
str()para que pueda ser concatenado con la contraseña. - La variable
numero_aleatorioalmacenará el valor generado.
Línea 12: code += numero_aleatorio
- Se está concatenando el valor generado (
numero_aleatorio) a la cadena de texto almacenada en la variablecode. - El operador
+=es utilizado para concatenar valores a una cadena de texto.
Línea 14: print(code)
- Se está utilizando la función
print()para imprimir la contraseña numérica generada. - La contraseña se imprime sin modificar, ya que no hay ninguna transformación aplicada.
En resumen, el programa utiliza la función random.randint() para generar números aleatorios y los concatena con una cadena de texto para crear una contraseña numérica aleatoria. El tamaño de la contraseña es solicitado al usuario mediante la función input(), y luego se imprime la contraseña generada en pantalla.
Creamos una nueva versión para que el programa pueda generar contraseñas alfanuméricas.

Recordar una contraseña de 100000 dígitos puede que sea algo complicado, es por ello que el uso de letras y números es una buena solución para generar contraseñas más seguras.
Para esta nueva versión utilizamos una variable llamada simbolos que contendrá todos los posibles caracteres que podrán aparecer en nuestra contraseña, otra variable llamada longsimbolos guardará la longitud de la variable simbolos, la variable recorte será asignada con un número al azar entre 1 y el valor de la variable longsimbolos, la misma se utilizará dentro de la función subcadena para extraer y concatenar en la variable code el símbolo elegido hasta completar la cantidad L solicitada por el usuario. Por último, se muestra como resultado el contenido de la variable code.
Analizamos el código
Algoritmo generador3
Escribir "Ingresar la longitud de la contraseña:"
Leer L
// Iniciamos una variable con una cadena vacía.
code <- ""
// Ingresamos los simbolos para crear contraseñas.
simbolos <- "abcdefghijklmñopqrstuvwxyz0123456789"
// Guardamos la longitud de la cadena simbolos.
longsimbolos <- longitud(simbolos)
Escribir "Generando contraseña alfanumérica..."
Para i <- 1 Hasta L Con Paso 1 Hacer
// Concatenamos de la variable simbolos subcadenas de 1 simbolo al azar.
// Elige un n{umero entre 1 y el valor de la variable longsimbolos.
recorte <- aleatorio(1,longsimbolos)
// Extrae y concatena un simbolo en la ubicación que indica la variable recorte.
code <- concatenar(code,(subcadena(simbolos, recorte, recorte)))
FinPara
// Mostramos el código resultante de la concatenación guardada en la variable code.
Escribir code
FinAlgoritmo
Ejecutamos el programa
Veamos el código en C++:
// GENERADOR3.
#include <iostream>
#include <string>
#include <cstdlib> // para utilizar rand() y srand()
#include <ctime> // Para plantar la semilla aleatoria.
using namespace std;
int main() {
int L; // longitud de la contraseña
cout << "Ingresar la longitud de la contraseña: ";
cin >> L;
string code = ""; // variable para almacenar la contraseña
string simbolos = "abcdefghijklmñopqrstuvwxyz0123456789"; // cadena con los símbolos
int longsimbolos = simbolos.length(); // longitud de la cadena de símbolos
cout << "Generando contraseña alfanumérica..." << endl;
for (int i = 1; i <= L; i++) {
// elige un número al azar entre 0 y longsimbolos - 1
int recorte = rand() % longsimbolos;
// extrae y concatena un símbolo en la ubicación que indica la variable recorte
code += simbolos.substr(recorte, 1);
}
// muestra el código resultante de la concatenación guardado en la variable code
cout << endl << code << endl;
return 0;
}
Vamos a analizar línea por línea este código en C++:
Línea 1: // GENERADOR3.
- La comilla de múltiples líneas (
//) es utilizada para indicar un comentario en C++, lo que significa que se ignora por la compilación del programa. - El texto “GENERADOR3.” es una descripción o título del programa.
Línea 3: #include <iostream>
- La directiva de inclusión
#includees utilizada para incluir archivos de cabecera en el programa actual. - En este caso, estamos incluyendo el archivo de cabecera
<iostream>, que proporciona funciones de entrada y salida. - Las funciones de entrada y salida (
cin,cout) se utilizarán más adelante.
Línea 4: #include <string>
- Se está incluyendo la biblioteca
<string>, que proporciona funciones y operadores para manipular cadenas de caracteres.
Línea 5: #include <cstdlib>
- Se está incluyendo la biblioteca
<cstdlib>, que proporciona funciones de conversión y funciones de cálculo aleatorio (rand()ysrand()).
Línea 6: #include <ctime>
- Se está incluyendo la biblioteca
<ctime>, que proporciona funciones para manipular la fecha y hora del sistema (time()).
Línea 8: using namespace std;
- La palabra clave
usinges utilizada para especificar un espacio de nombres a utilizar en el programa actual. - En este caso, estamos utilizando el espacio de nombres
std, que contiene las funciones de la biblioteca estándar de C++.
Línea 10: int main() {
- La función
main()es la entrada principal del programa, y se utiliza para iniciar la ejecución del programa. - El parámetro
intindica que la función devuelve un valor entero.
Línea 11: int L; // longitud de la contraseña
- Se está declarando una variable de tipo entero llamada
L, que almacenará el tamaño de la contraseña. - La comentario
// longitud de la contraseñaes utilizado para proporcionar información sobre la variable.
Línea 13: cout << "Ingresar la longitud de la contraseña: ";
- Se está utilizando la función
coutpara imprimir un mensaje en la pantalla, solicitando al usuario que ingrese el tamaño de la contraseña. - El operador de concatenación (
<<) es utilizado para conectar el mensaje con el flujo de salida.
Línea 14: cin >> L;
- Se está utilizando la función
cinpara leer un valor entero desde el teclado y almacenarlo en la variableL. - La palabra clave
>>es utilizada para desplazar los bits del valor leído hacia la izquierda.
Línea 16: string code = "";
- Se está declarando una variable de tipo cadena llamada
code, que almacenará la contraseña generada. - La inicialización a vacío (
"") indica que la contraseña es aún vacía.
Línea 17: string simbolos = "abcdefghijklmñopqrstuvwxyz0123456789";
- Se está declarando una variable de tipo cadena llamada
simbolos, que almacena una lista de símbolos (letras y números). - La inicialización a la cadena literal indica que la lista de símbolos es fija.
Línea 19: int longsimbolos = simbolos.length();
- Se está declarando una variable de tipo entero llamada
longsimbolos, que almacenará la longitud de la cadena de símbolos. - La función
length()devuelve el número de elementos en la cadena.
Línea 21: cout << "Generando contraseña alfanumérica..." << endl;
- Se está utilizando la función
coutpara imprimir un mensaje en la pantalla, indicando que se está generando una contraseña alfanumérica. - El operador de concatenación (
<<) es utilizado para conectar el mensaje con el flujo de salida.
Línea 23: for (int i = 1; i <= L; i++) {
- Se está utilizando un bucle
forpara iterar sobre los símbolos y generar la contraseña. - La condición de parada es que el valor entero
isea menor o igual a la longitud de la contraseña (L).
Línea 25: int recorte = rand() % longsimbolos;
- Se está generando un número aleatorio entre 0 y la longitud de la cadena de símbolos menos uno.
- La función
rand()devuelve un valor entero aleatorio, y el operador%es utilizado para restar el resto del
resultado.
Línea 28: code += simbolos.substr(recorte, 1);
- Se está extrayendo un símbolo de la cadena a partir del índice generado en la línea anterior.
- La función
substr()devuelve una cadena que comienza desde el índice indicado y tiene longitud igual a la cantidad especificada.
Línea 32: cout << endl << code << endl;
- Se está utilizando la función
coutpara imprimir un mensaje en la pantalla, mostrando la contraseña generada. - El operador de concatenación (
<<) es utilizado para conectar el mensaje con el flujo de salida.
Línea 34: return 0;
El valor 0 indica que la ejecución del programa fue exitosa.
La función main() devuelve un valor entero indicando que se ha finalizado correctamente.
Ahora el código en PYTHON:
# GENERADOR3.
import random
L = int(input("Ingresar la longitud de la contraseña: "))
code = ""
simbolos = "abcdefghijklmñopqrstuvwxyz0123456789"
longsimbolos = len(simbolos)
print("Generando contraseña alfanumérica...")
for i in range(1, L + 1):
# elige un número al azar entre 0 y longsimbolos - 1
recorte = random.randint(0, longsimbolos - 1)
# extrae y concatena un símbolo en la ubicación que indica la variable recorte
code += simbolos[recorte]
# muestra el código resultante de la concatenación guardado en la variable code
print(code)
Vamos a analizar línea por línea este código en PYTHON:
Línea 1: # GENERADOR3.
- La comilla de múltiples líneas (
#) es utilizada para indicar un comentario en Python, lo que significa que se
ignora por la ejecución del programa. - El texto “GENERADOR3.” es una descripción o título del programa.
Línea 3: import random
- La palabra clave
importes utilizada para importar módulos de Python, y en este caso, estamos importando el módulorandom. - El módulo
randomproporciona funciones para generar números aleatorios.
Línea 5: L = int(input("Ingresar la longitud de la contraseña: "))
- Se está declarando una variable llamada
Ly se le asigna el valor obtenido de la entrada del usuario. - La función
input()devuelve una cadena que representa la entrada del usuario, y la funciónint()convierte esa cadena a un número entero. - El texto entre comillas es el mensaje que se mostrará al usuario para pedirle que ingrese la longitud de la
contraseña.
Línea 7: code = ""
- Se está declarando una variable llamada
codey se le asigna un valor vacío (""). - La variable
codealmacenará la contraseña generada.
Línea 8: simbolos = "abcdefghijklmñopqrstuvwxyz0123456789"
- Se está declarando una cadena literal llamada
simbolos, que contiene todos los símbolos (letras y números) del alfabeto. - La variable
simbolosserá utilizada para generar la contraseña.
Línea 10: longsimbolos = len(simbolos)
- Se está declarando una variable llamada
longsimbolosy se le asigna el valor obtenido de la longitud de la cadenasimbolos. - La función
len()devuelve el número de elementos en la cadena.
Línea 12: print("Generando contraseña alfanumérica...")
- Se está utilizando la función
print()para imprimir un mensaje en la pantalla, indicando que se está generando una contraseña alfanumérica. - El texto entre comillas es el mensaje que se mostrará.
Línea 14: for i in range(1, L + 1):
- Se está utilizando un bucle
forpara iterar sobre los símbolos y generar la contraseña. - La función
range()devuelve una secuencia de números enteros que comienza desde el valor inicial (en este caso, 1) y termina en el valor final (que es la longitud de la contraseña (L) más uno).
Línea 16: recorte = random.randint(0, longsimbolos - 1)
- Se está generando un número aleatorio entre 0 y la longitud de la cadena de símbolos menos uno.
- La función
randint()devuelve un valor entero aleatorio dentro del rango especificado.
Línea 19: code += simbolos[recorte]
- Se está extrayendo un símbolo de la cadena a partir del índice generado en la línea anterior.
- El texto entre corchetes es el índice que se utiliza para acceder al símbolo correspondiente en la cadena.
Línea 22: print(code)
- Se está utilizando la función
print()para imprimir un mensaje en la pantalla, mostrando la contraseña generada. - La variable
codecontiene la contraseña, y se imprime su valor.
TAREA PARA EL HOGAR
- Agregar mayúsculas y más símbolos a la variable simbolos para generar contraseñas mucho más “pulentas”.
- Crear una nueva versión del generador para que genere una clave de longitud aleatoria.