Generador de Contraseñas Seguras en la Web con Python y Flask

- Si es de tu interés este artículo, apoyanos compartiendo en tus redes sociales favoritas y de esa manera también incentivando a tus amigos que crees les pueda interesar a que nos lean.


Generador de Contraseñas Seguras en la Web con Python y Flask



Introducción

En un mundo digital donde la seguridad es una prioridad, es fundamental contar con contraseñas seguras y aleatorias para proteger nuestras cuentas y datos personales. En este artículo, te mostraremos cómo desarrollar un Generador de Contraseñas Seguras en una aplicación web utilizando Python y Flask. Además, le daremos un estilo hacker a la interfaz para que tenga un aspecto profesional y tecnológico.

Tecnologías Utilizadas

Para este proyecto, hemos utilizado las siguientes tecnologías:

  • Python: Lenguaje de programación principal.

  • Flask: Framework web para manejar solicitudes HTTP.

  • HTML5: Para la estructura de la interfaz web.

  • CSS3: Para mejorar el diseño con un estilo hacker.

  • JavaScript: Para agregar interactividad y la funcionalidad de copiar la contraseña generada al portapapeles.

Características de la Aplicación

✔️ Generación de contraseñas aleatorias con opciones personalizables.
✔️ Opción de elegir la longitud de la contraseña (mínimo 4 y máximo 32 caracteres).
✔️ Inclusión opcional de mayúsculas, números y símbolos.
✔️ Interfaz con diseño hacker, fondo oscuro y texto en color verde neón.
✔️ Función para copiar la contraseña con un solo clic.

Código Fuente

📌 Backend con Flask (app.py****)

from flask import Flask, render_template, request
import random
import string

app = Flask(__name__)

# Función para generar la contraseña
def generar_contrasena(longitud, incluir_mayus, incluir_numeros, incluir_simbolos):
    caracteres = string.ascii_lowercase  # Minúsculas por defecto
    
    if incluir_mayus:
        caracteres += string.ascii_uppercase
    if incluir_numeros:
        caracteres += string.digits
    if incluir_simbolos:
        caracteres += string.punctuation
    
    return ''.join(random.choice(caracteres) for _ in range(longitud))

@app.route('/', methods=['GET', 'POST'])
def index():
    contrasena_generada = ""
    if request.method == 'POST':
        longitud = int(request.form['longitud'])
        incluir_mayus = 'mayusculas' in request.form
        incluir_numeros = 'numeros' in request.form
        incluir_simbolos = 'simbolos' in request.form
        
        contrasena_generada = generar_contrasena(longitud, incluir_mayus, incluir_numeros, incluir_simbolos)
    
    return render_template('index.html', contrasena=contrasena_generada)

if __name__ == '__main__':
    app.run(debug=True)

📌 Interfaz Web con HTML y CSS (index.html****)

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Generador de Contraseñas</title>
    <style>
        body {
            font-family: "Courier New", monospace;
            text-align: center;
            background-color: #0d0d0d;
            color: #00ff00;
            padding: 20px;
        }
        .container {
            background: #000;
            padding: 20px;
            border-radius: 10px;
            box-shadow: 0px 0px 15px #00ff00;
            max-width: 400px;
            margin: auto;
        }
        input, button {
            width: 100%;
            padding: 10px;
            margin: 10px 0;
            border-radius: 5px;
            border: 1px solid #00ff00;
            background: black;
            color: #00ff00;
        }
        button {
            background-color: black;
            color: #00ff00;
            font-size: 16px;
            cursor: pointer;
            border: 2px solid #00ff00;
        }
        button:hover {
            background-color: #00ff00;
            color: black;
        }
        label {
            display: block;
            margin-top: 10px;
        }
    </style>
    <script>
        function copiarContrasena() {
            var contrasena = document.getElementById("contrasena");
            navigator.clipboard.writeText(contrasena.value);
            alert("Contraseña copiada al portapapeles!");
        }
    </script>
</head>
<body>
    <div class="container">
        <h1>🔓 Generador de Contraseñas 🔒</h1>
        <form action="/" method="post">
            <label for="longitud">Longitud de la contraseña:</label>
            <input type="number" name="longitud" min="4" max="32" required>
            
            <label>
                <input type="checkbox" name="mayusculas"> Incluir mayúsculas
            </label>
            <label>
                <input type="checkbox" name="numeros"> Incluir números
            </label>
            <label>
                <input type="checkbox" name="simbolos"> Incluir símbolos
            </label>
            
            <button type="submit">Generar Contraseña</button>
        </form>
        
        {% if contrasena %}
            <h2>Contraseña Generada:</h2>
            <input type="text" id="contrasena" value="{{ contrasena }}" readonly>
            <button onclick="copiarContrasena()">Copiar</button>
        {% endif %}
    </div>
</body>
</html>




No hay comentarios