Cómo Crear Contraseñas Seguras con un Generador de Contraseñas en Python

En el mundo digital de hoy, proteger tus cuentas en línea nunca ha sido más crucial. Los ataques cibernéticos están en aumento, y una contraseña débil puede ser el eslabón más débil que ponga en riesgo tu seguridad digital. Aquí es donde un Generador de Contraseñas en Python se convierte en una herramienta indispensable. En este post, exploraremos cómo puedes usar esta herramienta para crear contraseñas robustas y seguras.

Table of Contents

Toggle

La Necesidad de Contraseñas Fuertes

Las contraseñas son la primera línea de defensa contra accesos no autorizados a tus cuentas personales y laborales. Sin embargo, crear una contraseña fuerte y única para cada cuenta puede ser tedioso. Es aquí donde nuestro proyecto, un generador de contraseñas desarrollado en Python, simplifica el proceso.

Dentro de mis aplicaciones gratuitas tengo otro sistema generador de contraseñas hecho en Javascript si te sientes más familiarizado con está tecnología. También tengo otras aplicaciones en Python que te podrían servir.

Introducción al Generador de Contraseñas en Python

Nuestro generador de contraseñas es un proyecto compuesto por dos archivos principales: app.py y main.py. Esta aplicación ha sido diseñada para ser sencilla de usar pero poderosa en funcionalidad, ofreciendo a los usuarios la capacidad de personalizar sus contraseñas generadas según varios criterios.

Este sistema utiliza el framework de flask para poder utilizar plantillas html y mostrarla vía web, de hecho por este motivo se creó el archivo app.py, ya que ejecutando a main.py desde consola te genera las contraseñas también.

Características Principales

El Generador de Contraseñas en Python ofrece varias opciones para personalizar la contraseña generada:

Cómo Funciona

Nuestro generador utiliza una combinación de letras minúsculas, números, caracteres especiales y mayúsculas para crear contraseñas. Estos elementos se mezclan de manera aleatoria para generar una contraseña segura que cumple con los criterios especificados por el usuario.

Ejemplo de Uso

Para utilizar el generador, simplemente debes ejecutar el archivo main.py y seguir las instrucciones en la consola. Puedes personalizar la longitud de tu contraseña y decidir si incluir números, caracteres especiales y mayúsculas.

Código de mi archivo main.py

<span class="line"><span style="color: #81A1C1">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">string</span></span>
<span class="line"><span style="color: #8FBCBB">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">random</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8FBCBB">def</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">generate_password</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">length</span><span style="color: #D8DEE9FF">=8</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">include_numbers</span><span style="color: #D8DEE9FF">=</span><span style="color: #8FBCBB">True</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">include_special_chars</span><span style="color: #D8DEE9FF">=</span><span style="color: #8FBCBB">True</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">include_uppercase</span><span style="color: #D8DEE9FF">=</span><span style="color: #8FBCBB">True</span><span style="color: #D8DEE9FF">):</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color: #A3BE8C">    Genera una contraseña segura</span><span style="color: #D8DEE9">.</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">    :</span><span style="color: #8FBCBB">param</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">length</span><span style="color: #D8DEE9FF">: </span><span style="color: #8FBCBB">Longitud</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">de</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">la</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">contraseña</span><span style="color: #D8DEE9FF">. </span><span style="color: #8FBCBB">Por</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">defecto</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">es</span><span style="color: #D8DEE9FF"> 8.</span></span>
<span class="line"><span style="color: #D8DEE9FF">    :</span><span style="color: #8FBCBB">param</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">include_numbers</span><span style="color: #D8DEE9FF">: </span><span style="color: #8FBCBB">Incluir</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">números</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">en</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">la</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">contraseña</span><span style="color: #D8DEE9FF">. </span><span style="color: #8FBCBB">Por</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">defecto</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">es</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">True</span><span style="color: #D8DEE9FF">.</span></span>
<span class="line"><span style="color: #D8DEE9FF">    :</span><span style="color: #8FBCBB">param</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">include_special_chars</span><span style="color: #D8DEE9FF">: </span><span style="color: #8FBCBB">Incluir</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">caracteres</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">especiales</span><span style="color: #D8DEE9FF">. </span><span style="color: #8FBCBB">Por</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">defecto</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">es</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">True</span><span style="color: #D8DEE9FF">.</span></span>
<span class="line"><span style="color: #D8DEE9FF">    :</span><span style="color: #8FBCBB">param</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">include_uppercase</span><span style="color: #D8DEE9FF">: </span><span style="color: #8FBCBB">Incluir</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">mayúsculas</span><span style="color: #D8DEE9FF">. </span><span style="color: #8FBCBB">Por</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">defecto</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">es</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">True</span><span style="color: #D8DEE9FF">.</span></span>
<span class="line"><span style="color: #D8DEE9FF">    :</span><span style="color: #8FBCBB">return</span><span style="color: #D8DEE9FF">: </span><span style="color: #8FBCBB">La</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">contraseña</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">generada</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">como</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">una</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">cadena</span><span style="color: #D8DEE9FF">.</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color: #A3BE8C">    # Definir los bloques de construcción de la contraseñ</span><span style="color: #D8DEE9">a</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">letters</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">string</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">ascii_lowercase</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">numbers</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">string</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">digits</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">if</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">include_numbers</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">else</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&#39;&#39;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">special_chars</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">string</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">punctuation</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">if</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">include_special_chars</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">else</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&#39;&#39;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">uppercase</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">string</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">ascii_uppercase</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">if</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">include_uppercase</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">else</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&#39;&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">    # </span><span style="color: #8FBCBB">Combinar</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">todos</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">los</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">posibles</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">caracteres</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">possible_chars</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">letters</span><span style="color: #D8DEE9FF"> + </span><span style="color: #8FBCBB">numbers</span><span style="color: #D8DEE9FF"> + </span><span style="color: #8FBCBB">special_chars</span><span style="color: #D8DEE9FF"> + </span><span style="color: #8FBCBB">uppercase</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">    # </span><span style="color: #8FBCBB">Generar</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">la</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">contraseña</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">password</span><span style="color: #D8DEE9FF"> = </span><span style="color: #ECEFF4">&#39;&#39;</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">join</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">random</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">choice</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">possible_chars</span><span style="color: #D8DEE9FF">) </span><span style="color: #8FBCBB">for</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">_</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">in</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">range</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">length</span><span style="color: #D8DEE9FF">))</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">password</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">Interacción</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">con</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">el</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">usuario</span></span>
<span class="line"><span style="color: #8FBCBB">if</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">__name__</span><span style="color: #D8DEE9FF"> == </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">__main__</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">:</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">length</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">int</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">input</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Longitud de la contraseña (por defecto 8): </span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">) </span><span style="color: #8FBCBB">or</span><span style="color: #D8DEE9FF"> 8)</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">include_numbers</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">input</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Incluir números? (S/n): </span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">).</span><span style="color: #8FBCBB">lower</span><span style="color: #D8DEE9FF">() != </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">n</span><span style="color: #ECEFF4">&#39;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">include_special_chars</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">input</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Incluir caracteres especiales? (S/n): </span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">).</span><span style="color: #8FBCBB">lower</span><span style="color: #D8DEE9FF">() != </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">n</span><span style="color: #ECEFF4">&#39;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">include_uppercase</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">input</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Incluir mayúsculas? (S/n): </span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">).</span><span style="color: #8FBCBB">lower</span><span style="color: #D8DEE9FF">() != </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">n</span><span style="color: #ECEFF4">&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">password</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">generate_password</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">length</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">include_numbers</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">include_special_chars</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">include_uppercase</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">print</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">f</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Tu nueva contraseña es: {password}</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"></span>

Código de mi archivo app.py

<span class="line"><span style="color: #D8DEE9">from</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">flask</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">Flask</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">request</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">render_template_string</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">Asegúrate</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">de</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">que</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">main</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">py</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">esté</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">en</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">el</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">mismo</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">directorio</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">que</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">este</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">archivo</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">o</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">ajusta</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">la</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">ruta</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">de</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">importación</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">según</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">sea</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">necesario</span><span style="color: #D8DEE9FF">.</span></span>
<span class="line"><span style="color: #81A1C1">from</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">main</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">generate_password</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8FBCBB">app</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">Flask</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">__name__</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">Define</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">una</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">página</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">simple</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">para</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">generar</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">contraseñas</span></span>
<span class="line"><span style="color: #D8DEE9FF">@</span><span style="color: #8FBCBB">app</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">route</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">/</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">methods</span><span style="color: #D8DEE9FF">=[</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">GET</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">POST</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">])</span></span>
<span class="line"><span style="color: #8FBCBB">def</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">home</span><span style="color: #D8DEE9FF">():</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">if</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">request</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">method</span><span style="color: #D8DEE9FF"> == </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">POST</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">:</span></span>
<span class="line"><span style="color: #D8DEE9FF">        # </span><span style="color: #8FBCBB">Obtiene</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">los</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">parámetros</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">del</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">formulario</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">web</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #8FBCBB">length</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">int</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">request</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">form</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">get</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">length</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 8))</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #8FBCBB">include_numbers</span><span style="color: #D8DEE9FF"> = </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">include_numbers</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">in</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">request</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">form</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #8FBCBB">include_special_chars</span><span style="color: #D8DEE9FF"> = </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">include_special_chars</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">in</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">request</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">form</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #8FBCBB">include_uppercase</span><span style="color: #D8DEE9FF"> = </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">include_uppercase</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">in</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">request</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">form</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">        # </span><span style="color: #8FBCBB">Genera</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">la</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">contraseña</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #8FBCBB">password</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">generate_password</span><span style="color: #D8DEE9FF">(</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #8FBCBB">length</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">include_numbers</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">include_special_chars</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">include_uppercase</span></span>
<span class="line"><span style="color: #D8DEE9FF">        )</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">        # </span><span style="color: #8FBCBB">Pasa</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">la</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">contraseña</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">generada</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">de</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">vuelta</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">al</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">template</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #8FBCBB">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">render_template_string</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">PAGE_TEMPLATE</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">password</span><span style="color: #D8DEE9FF">=</span><span style="color: #8FBCBB">password</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">else</span><span style="color: #D8DEE9FF">:</span></span>
<span class="line"><span style="color: #D8DEE9FF">        # </span><span style="color: #8FBCBB">No</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">se</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">ha</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">enviado</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">el</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">formulario</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">muestra</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">la</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">página</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">por</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">defecto</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #8FBCBB">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">render_template_string</span><span style="color: #D8DEE9FF">(</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #8FBCBB">PAGE_TEMPLATE</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">password</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Tu contraseña aparecerá aquí.</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        )</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">HTML</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">del</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">template</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">en</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">forma</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">de</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">string</span></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">HTML</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">del</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">template</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">en</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">forma</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">de</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">string</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">ahora</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">con</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">CSS</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">responsivo</span></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">HTML</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">del</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">template</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">en</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">forma</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">de</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">string</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">utilizando</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">Bootstrap</span></span>
<span class="line"><span style="color: #8FBCBB">PAGE_TEMPLATE</span><span style="color: #D8DEE9FF"> = </span><span style="color: #ECEFF4">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color: #A3BE8C">&lt;!doctype html</span><span style="color: #D8DEE9">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">&lt;</span><span style="color: #8FBCBB">html</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">lang</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">es</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">&lt;</span><span style="color: #8FBCBB">head</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    &lt;</span><span style="color: #8FBCBB">meta</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">charset</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">UTF-8</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    &lt;</span><span style="color: #8FBCBB">title</span><span style="color: #D8DEE9FF">&gt;</span><span style="color: #8FBCBB">Generador</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">de</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">Contraseñas</span><span style="color: #D8DEE9FF">&lt;/</span><span style="color: #8FBCBB">title</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    &lt;</span><span style="color: #8FBCBB">meta</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">name</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">viewport</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">content</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">width=device-width, initial-scale=1</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    &lt;</span><span style="color: #8FBCBB">link</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">rel</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">stylesheet</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">href</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">https://cdn.jsdelivr.net/npm/@picocss/pico@1/css/pico.min.css</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">&lt;/</span><span style="color: #8FBCBB">head</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">&lt;</span><span style="color: #8FBCBB">body</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    &lt;</span><span style="color: #8FBCBB">nav</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">container-fluid</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        &lt;</span><span style="color: #8FBCBB">ul</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">            &lt;</span><span style="color: #8FBCBB">li</span><span style="color: #D8DEE9FF">&gt;&lt;</span><span style="color: #8FBCBB">strong</span><span style="color: #D8DEE9FF">&gt;</span><span style="color: #8FBCBB">Generador</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">de</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">Contraseñas</span><span style="color: #D8DEE9FF">&lt;/</span><span style="color: #8FBCBB">strong</span><span style="color: #D8DEE9FF">&gt;&lt;/</span><span style="color: #8FBCBB">li</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        &lt;/</span><span style="color: #8FBCBB">ul</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        &lt;</span><span style="color: #8FBCBB">ul</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">            &lt;</span><span style="color: #8FBCBB">li</span><span style="color: #D8DEE9FF">&gt;&lt;</span><span style="color: #8FBCBB">a</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">href</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">https://configuroweb.com/</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">role</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">button</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span><span style="color: #8FBCBB">Para</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">más</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">desarrollos</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">configuroweb</span><span style="color: #D8DEE9FF">&lt;/</span><span style="color: #8FBCBB">a</span><span style="color: #D8DEE9FF">&gt;&lt;/</span><span style="color: #8FBCBB">li</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        &lt;/</span><span style="color: #8FBCBB">ul</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    &lt;/</span><span style="color: #8FBCBB">nav</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    &lt;</span><span style="color: #8FBCBB">main</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">container</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        &lt;</span><span style="color: #8FBCBB">div</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">grid</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">            &lt;</span><span style="color: #8FBCBB">section</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                &lt;</span><span style="color: #8FBCBB">hgroup</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                    &lt;</span><span style="color: #8FBCBB">h2</span><span style="color: #D8DEE9FF">&gt;</span><span style="color: #8FBCBB">Genera</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">una</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">contraseña</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">segura</span><span style="color: #D8DEE9FF">&lt;/</span><span style="color: #8FBCBB">h2</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                    &lt;</span><span style="color: #8FBCBB">h3</span><span style="color: #D8DEE9FF">&gt;</span><span style="color: #8FBCBB">Completa</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">los</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">siguientes</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">campos</span><span style="color: #D8DEE9FF">&lt;/</span><span style="color: #8FBCBB">h3</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                &lt;/</span><span style="color: #8FBCBB">hgroup</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                &lt;</span><span style="color: #8FBCBB">form</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">method</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">post</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">needs-validation</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">novalidate</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                    &lt;</span><span style="color: #8FBCBB">div</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">form-group</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                        &lt;</span><span style="color: #8FBCBB">label</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">for</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">length</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span><span style="color: #8FBCBB">Longitud</span><span style="color: #D8DEE9FF">:&lt;/</span><span style="color: #8FBCBB">label</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                        &lt;</span><span style="color: #8FBCBB">input</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">type</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">number</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">form-control</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">name</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">length</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">value</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">8</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">required</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                    &lt;/</span><span style="color: #8FBCBB">div</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                    &lt;</span><span style="color: #8FBCBB">div</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">form-group form-check</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                        &lt;</span><span style="color: #8FBCBB">input</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">type</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">checkbox</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">form-check-input</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">name</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">include_numbers</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">id</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">include_numbers</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">checked</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                        &lt;</span><span style="color: #8FBCBB">label</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">form-check-label</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">for</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">include_numbers</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span><span style="color: #8FBCBB">Incluir</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">números</span><span style="color: #D8DEE9FF">&lt;/</span><span style="color: #8FBCBB">label</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                    &lt;/</span><span style="color: #8FBCBB">div</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                    &lt;</span><span style="color: #8FBCBB">div</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">form-group form-check</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                        &lt;</span><span style="color: #8FBCBB">input</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">type</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">checkbox</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">form-check-input</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">name</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">include_special_chars</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">id</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">include_special_chars</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">checked</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                        &lt;</span><span style="color: #8FBCBB">label</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">form-check-label</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">for</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">include_special_chars</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span><span style="color: #8FBCBB">Incluir</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">caracteres</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">especiales</span><span style="color: #D8DEE9FF">&lt;/</span><span style="color: #8FBCBB">label</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                    &lt;/</span><span style="color: #8FBCBB">div</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                    &lt;</span><span style="color: #8FBCBB">div</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">form-group form-check</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                        &lt;</span><span style="color: #8FBCBB">input</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">type</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">checkbox</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">form-check-input</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">name</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">include_uppercase</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">id</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">include_uppercase</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">checked</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                        &lt;</span><span style="color: #8FBCBB">label</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">form-check-label</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">for</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">include_uppercase</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span><span style="color: #8FBCBB">Incluir</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">mayúsculas</span><span style="color: #D8DEE9FF">&lt;/</span><span style="color: #8FBCBB">label</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                    &lt;/</span><span style="color: #8FBCBB">div</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                    &lt;</span><span style="color: #8FBCBB">button</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">type</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">submit</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">btn btn-primary btn-block</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span><span style="color: #8FBCBB">Generar</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">Contraseña</span><span style="color: #D8DEE9FF">&lt;/</span><span style="color: #8FBCBB">button</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                &lt;/</span><span style="color: #8FBCBB">form</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                &lt;</span><span style="color: #8FBCBB">p</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">mt-4 text-center</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF">{ </span><span style="color: #8FBCBB">password</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">}</span><span style="color: #D8DEE9FF">}&lt;/</span><span style="color: #8FBCBB">p</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">            &lt;/</span><span style="color: #8FBCBB">section</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        &lt;/</span><span style="color: #8FBCBB">div</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    &lt;/</span><span style="color: #8FBCBB">main</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    &lt;</span><span style="color: #8FBCBB">footer</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">class</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">container</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        &lt;</span><span style="color: #8FBCBB">small</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">            &lt;</span><span style="color: #8FBCBB">a</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">href</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">#</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span><span style="color: #8FBCBB">Política</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">de</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">privacidad</span><span style="color: #D8DEE9FF">&lt;/</span><span style="color: #8FBCBB">a</span><span style="color: #D8DEE9FF">&gt; • &lt;</span><span style="color: #8FBCBB">a</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">href</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">#</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">&gt;</span><span style="color: #8FBCBB">Términos</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">de</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">servicio</span><span style="color: #D8DEE9FF">&lt;/</span><span style="color: #8FBCBB">a</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        &lt;/</span><span style="color: #8FBCBB">small</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    &lt;/</span><span style="color: #8FBCBB">footer</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">&lt;/</span><span style="color: #8FBCBB">body</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">&lt;/</span><span style="color: #8FBCBB">html</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #ECEFF4">&quot;&quot;&quot;</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color: #A3BE8C">if __name__ == </span><span style="color: #ECEFF4">&quot;</span><span style="color: #8FBCBB">__main__</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9">:</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">app</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">run</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">debug</span><span style="color: #D8DEE9FF">=</span><span style="color: #8FBCBB">True</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"></span>

Repositorio de GitHub del Sistema Generador de Contraseñas en Python

Conclusión

Asegurar tus cuentas en línea es más importante que nunca, y el Generador de Contraseñas en Python es una herramienta valiosa para lograrlo. Con su ayuda, puedes generar contraseñas fuertes de manera rápida y eficiente, protegiendo tus datos personales contra amenazas cibernéticas.

Implementar prácticas de seguridad sólidas es esencial en nuestra era digital, y herramientas como esta hacen que sea más accesible para todos mantenerse seguros en línea.

Para desarrollos a medida me puedes contactar en el siguiente enlace de contacto

🤖 Asistente Virtual
¡Hola! 👋

¿En qué te puedo ayudar hoy?