Cover Image

Cómo crear un generador de contraseñas seguras usando hash en PHP

Abril 2, 2025 - Tiempo de lectura: 13 minutos

¿Quieres ofrecer a tus usuarios contraseñas únicas y seguras? 💡
En este artículo te muestro cómo crear un pequeño generador de contraseñas en PHP utilizando funciones de hash como md5, sha1, y otras herramientas nativas que puedes combinar para producir contraseñas fuertes y difíciles de adivinar.


🧠 ¿Qué es una función hash?

Una función hash convierte cualquier dato (como texto o número) en una cadena alfanumérica fija. Por ejemplo:

echo md5("hola"); // salida: 4d186321c1a7f0f354b297e8914ab240

Los hashes son útiles para ofuscar contraseñas o generar valores únicos como identificadores.


⚙️ Ejemplo 1: Generar una contraseña simple con md5

<?php $base = uniqid(mt_rand(), true); // Genera una base única y aleatoria $hash = md5($base); // Limita la longitud si quieres (ej: 12 caracteres) $password = substr($hash, 0, 12); echo "Tu contraseña segura es: $password"; ?>

🧪 Ejemplo 2: Usar sha1 o hash('sha256') para más seguridad

<?php $base = uniqid(mt_rand(), true); $hash = hash('sha256', $base); // Más largo y fuerte que md5 $password = substr($hash, 0, 16); echo "Contraseña segura: $password"; ?>

🎛️ Ejemplo 3: Personalizar con letras, números y símbolos

Para mayor control, puedes generar contraseñas con una lista de caracteres personalizados:

<?php function generarPassword($longitud = 12) { $caracteres = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%&*?'; $password = ''; $max = strlen($caracteres) - 1; for ($i = 0; $i < $longitud; $i++) { $password .= $caracteres[random_int(0, $max)]; } return $password; } echo "Contraseña: " . generarPassword(); ?>

Este método no usa hash directamente, pero genera contraseñas muy fuertes y personalizables.


📌 ¿Qué opción es mejor?

  • Usa hash() si quieres un valor basado en una semilla (ideal para tokens, por ejemplo).

  • Usa random_int() y una lista de caracteres si buscas una contraseña más “humana” y personalizable.