Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

Cómo crear un generador de contraseñas aleatorias en Python

Cómo-crear-un-generador-de-contraseñas-aleatorias-en-Python
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Aprenda a codificar un generador de contraseñas en Python, para generar contraseñas seguras, utilizando Python secretos módulo.

Python es un lenguaje de programación versátil que puede usar en aplicaciones de automatización, desarrollo web, análisis de datos y más.

Puede usar Python para automatizar tareas del mundo real, como monitorear sitios web, enviar correos electrónicos y generar contraseñas. En este tutorial, aprenderá cómo crear un generador de contraseñas seguras y aleatorias en Python.

Empecemos…

3 Reasons Why You Should Code a Password Generator in Python

Generador de contraseñas aleatorias

¿Alguna vez se ha sentido cansado de generar contraseñas seguras y realizar un seguimiento de ellas? He aquí por qué debería considerar codificar un generador de contraseñas en Python.

1. Automatice el proceso de generación de contraseñas

En un día típico de su vida, visitará numerosos sitios web, desde sitios web de comercio electrónico hasta plataformas de aprendizaje y codificación. La mayoría de los sitios web requieren que inicie sesión con credenciales. Esta es una tarea repetitiva que puede automatizar mediante un script de Python.

2. Genere contraseñas seguras

Encontrar contraseñas seguras que cumplan con las restricciones de seguridad puede ser un desafío; las contraseñas triviales que no son seguras son susceptibles a ataques de seguridad.

python-contraseña-generador

Puedes usar Python para generar programáticamente seguro contraseñas Esto le permite ejecutar el script para generar contraseñas según sea necesario, sin preocuparse de que la contraseña sea segura.

3. Agregue un Proyecto Práctico a su Portafolio

Si es un programador principiante de Python, debe crear proyectos para perfeccionar sus habilidades y mostrar su experiencia en programación a través de un portafolio.

Además de un simple script de Python, puede personalizarlo aún más y publicarlo como un paquete PyPI. También puede agregar una interfaz gráfica de usuario utilizando bibliotecas como Tkinter, ¡y mucho más!

De esta manera, puede codificar su propio generador de contraseñas, para generar y administrar sus contraseñas de manera segura, en los distintos sitios.

The Random Module in Python: Is It Secure Enough?

Python módulo aleatorio también proporciona funciones que le permiten tomar muestras de un alfabeto y construir aparentemente secuencias aleatorias. El módulo aleatorio genera pseudoaleatorio secuencias. Analicemos lo que significa pseudoaleatoriedad.

El término pseudoaleatorio significa que aunque la secuencia pueda parecer aleatoria, en realidad es determinista.

Por lo tanto, si establece una semilla aleatoria, el módulo aleatorio generará la misma secuencia en su máquina y para cualquiera que ejecute el mismo script con la misma semilla.

Esta es la razón por la que no debe usar random para aplicaciones en las que la seguridad es importante, como las contraseñas.

Entonces, ¿cuándo puedes usar el random ¿módulo?

Para todas las aplicaciones que no son sensibles, puede usar el módulo aleatorio. Por ejemplo, hay tres conjuntos de cuestionarios, A, B y C en una clase de 40 estudiantes. Le gustaría asignar un conjunto particular a cada estudiante al azar.

2

En este caso, puedes usar random.choice() dentro de una expresión de comprensión de lista, como se muestra a continuación:

import random

papers = ['A','B','C']

q_list = [random.choice(papers) for i in range(40)]
print(q_list)
Sample output:
['A', 'A', 'B', 'B', 'B', 'B', 'B', 'C', 'B', 'A', 'C', 'C', 'B', 
'C', 'A', 'B', 'A', 'A', 'C', 'C', 'A', 'A', 'A', 'C', 'A', 'C', 
'A', 'C', 'B', 'B', 'B', 'B', 'A', 'A', 'B', 'B', 'A', 'A', 'B', 'B']

📑 Para llevar clave: Para simulaciones estadísticas, puede utilizar el random módulo; para aplicaciones delicadas, utilice el secrets módulo.

Python Secrets Module: Your Key to Secure Passwords

La propuesta de mejora de Python, PEP 506, aconseja a los desarrolladores que utilicen el secrets módulo siempre que una secuencia deba ser criptográficamente segura, como contraseñas y tokens de seguridad.

python-secrets-contraseña-generador

EL secrets el módulo tiene varias funciones integradas que le permiten hacer lo siguiente:

  • Genere secuencias de números aleatorios que sean seguras para aplicaciones criptográficas.
  • Usa funciones como choice(), randbits() y randbelow() para generar números aleatorios seguros.
  • Genere tokens para restablecer una contraseña, URL temporales y más.

How to Code a Password Generator in Python [in 4 Steps]

Requisitos previos: debe tener Python 3.6 o una versión posterior instalada para codificar junto con este tutorial. También puede ejecutar el código de ejemplo en Editor de código Python en línea de Geekflare.

Paso 1: Importar los módulos necesarios

Como primer paso, importemos el secrets módulo. Este módulo está integrado en la biblioteca estándar de Python, por lo que puede importarlo de la siguiente manera:

import secrets

Importemos también el código integrado de Python. string módulo:

import string

Paso 2: Definir el alfabeto

El siguiente paso es definir el alfabeto. Alphabet denota el conjunto de todos los caracteres que consideraremos para la generación de contraseñas. Aquí, queremos que contenga lo siguiente: letras mayúsculas y minúsculas y caracteres especiales.

alfabeto

EL string El módulo proporciona constantes de cadena que podemos usar para definir el alfabeto. Usaremos las siguientes constantes de cadena:

  • EL ascii_letters es una concatenación de letras mayúsculas y minúsculas.
  • EL digits constante es la cadena que contiene los números del 0 al 9: '0123456789'.
  • EL punctuation constante es la cadena de todos los caracteres especiales.
letters = string.ascii_letters
digits = string.digits
special_chars = string.punctuation

Finalmente, concatenemos las constantes de cadena anteriores para obtener el alfabeto.

alphabet = letters + digits + special_chars

Paso 3: fija la longitud de la contraseña; Generar una contraseña

Almacenemos la longitud de la contraseña en la variable, pwd_length. En este ejemplo, la cadena de contraseña tiene una longitud de 12.

pwd_length = 12

▶️ Ahora, ejecute la siguiente celda de código para generar una contraseña:

pwd = ''
for i in range(pwd_length):
  pwd += ''.join(secrets.choice(alphabet))

print(pwd)
# Sample output
}2:Lz,1!Gvo@

El código anterior hace lo siguiente:

  • La cadena de contraseña pwd es una cadena vacía inicialmente.
  • Sabemos que secrets.choice(alphabet) devuelve un carácter, muestreado al azar de la alphabet.
  • Usamos la join() método para agregar este carácter al pwd cuerda. Como no queremos ningún espacio en blanco entre los caracteres, especificamos que el separador sea ''.
  • Para repetir los pasos anteriores para generar una contraseña, usamos un bucle que se ejecuta tantas iteraciones como la longitud de la contraseña.

Paso 4: personalice sus contraseñas en función de las restricciones

Puede personalizar la generación de contraseñas verificando si cumple con ciertas restricciones.

Por ejemplo, verifiquemos si la cadena de contraseña generada de longitud 12 satisface las siguientes restricciones:

  • La cuerda pwd debe contener al menos un carácter especial.
  • Debe contener al menos dos dígitos.

En el fragmento de código a continuación, puede modificar la condición de que el if comprueba la declaración de acuerdo con las restricciones que defina.

while True:
  pwd = ''
  for i in range(pwd_length):
    pwd += ''.join(secrets.choice(alphabet))

  if (any(char in special_chars for char in pwd) and 
      sum(char in digits for char in pwd)>=2):
          break
print(pwd)
# Sample output
lX]{`y47pM4t

En la celda de código de arriba, usamos un bucle while infinito que se ejecuta mientras la cadena de contraseña pwd no cumple con las restricciones. Cuando la contraseña generada, pwd satisface las restricciones, salimos del bucle infinito.

Aquí está el código completo para el generador de contraseñas de Python:

# necessary imports
import secrets
import string

# define the alphabet
letters = string.ascii_letters
digits = string.digits
special_chars = string.punctuation

alphabet = letters + digits + special_chars

# fix password length
pwd_length = 12

# generate a password string
pwd = ''
for i in range(pwd_length):
  pwd += ''.join(secrets.choice(alphabet))

print(pwd)

# generate password meeting constraints
while True:
  pwd = ''
  for i in range(pwd_length):
    pwd += ''.join(secrets.choice(alphabet))

  if (any(char in special_chars for char in pwd) and 
      sum(char in digits for char in pwd)>=2):
          break
print(pwd)

Conclusión

¡Felicitaciones por terminar este tutorial! 🎉Ya has aprendido a codificar un generador de contraseñas en Python.

  • Para generar contraseñas criptográficamente seguras, debe utilizar el secretos módulo y no al azar módulo.
  • Una contraseña segura debe ser lo suficientemente larga y debe ser aleatoria, ya que no se puede predecir ni generar fácilmente. Debe ser una combinación de letras mayúsculas y minúsculas, dígitos y caracteres especiales.
  • Python se envía con un incorporado cadena módulo que proporciona todas las letras, dígitos y caracteres especiales en las constantes letras_ascii, dígitos y puntuación, respectivamente. Utilice la sintaxis: cadena.constante para acceder a estas constantes de cadena.
  • Puede utilizar las constantes anteriores para definir un alfabeto (un conjunto de todos los caracteres) para la generación de contraseñas.
  • Una vez que haya definido un alfabeto, puede utilizar secretos.elección() para muestrear un carácter aleatorio de él. Para repetir esto durante la longitud de la contraseña, puede usar un bucle for.

▶️ A continuación, lea el lista de servidores web Python usar.

Gracias a nuestros patrocinadores
Más lecturas interesantes sobre el desarrollo
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Intente Intruder