Generador de htpasswd

Genera una línea usuario:hash para un archivo .htpasswd de autenticación básica de Apache o Nginx (bcrypt o MD5-APR1) todo en tu navegador.

🌐 English

🔒 Privado por diseño: tu texto se procesa localmente en tu navegador; nada se sube nunca a ningún servidor.

Cómo generar una entrada de htpasswd

  1. Pega el nombre de usuario en la primera caja (etiquetada “Texto original”).
  2. Pega la contraseña en la segunda caja (etiquetada “Texto modificado”).
  3. Elige un formato de hash: bcrypt (recomendado, el valor por defecto) o MD5-APR1 (heredado). Si elegiste bcrypt, también puedes ajustar el factor de coste.
  4. Haz clic en el botón. La caja de resultado contiene exactamente una línea: usuario:hash, lista para copiar directamente en un archivo .htpasswd.

Sin instalación, sin cuenta, sin subida, ambos formatos de hash se calculan enteramente dentro de tu pestaña del navegador.

bcrypt frente a MD5-APR1

El comando htpasswd de Apache ha ofrecido varios formatos de hash a lo largo de los años. Esta herramienta soporta los dos que aún se usan de verdad:

Si no estás seguro de cuál necesitas, usa bcrypt.

Verificar que el algoritmo MD5-APR1 se implementó correctamente

No existe ningún paquete npm mantenido y correctamente licenciado que implemente la variante específica $apr1$ de Apache, así que la implementación de esta herramienta se escribió a mano a partir del algoritmo de referencia bien documentado (el mismo que implementan la propia librería APR de Apache, la función crypt() de PHP, y passlib de Python), y luego se verificó de forma independiente, no simplemente se confió en ella. El propio comando openssl passwd -apr1 de esta máquina calcula el algoritmo idéntico a través de una ruta de código completamente separada; ejecutarlo contra varias contraseñas y sales (incluyendo casos límite como una contraseña vacía, una contraseña de más de 16 bytes, y un emoji de varios bytes) y comparar la salida byte a byte contra el propio resultado de esta herramienta confirmó una coincidencia exacta cada vez. Esos valores de referencia reales exactos están fijados en las pruebas automatizadas de esta herramienta, así que un cambio futuro no puede romper silenciosamente el algoritmo.

Tus credenciales nunca salen de tu dispositivo

Muchas webs de “generador de htpasswd” y “generador de bcrypt” funcionan enviando la contraseña que escribes directamente a un servidor para calcular el hash, vale la pena pensárselo dos veces para algo tan sensible como una credencial de servidor real (o incluso de prueba). Esta herramienta nunca necesita un viaje de ida y vuelta al servidor: ambas rutas de hashing se ejecutan enteramente dentro de tu propia pestaña del navegador usando librerías JavaScript sin ningún componente de servidor. El nombre de usuario y la contraseña que escribas nunca se transmiten, registran ni almacenan en ningún sitio.

Usos habituales

Cómo funciona, en imágenes

Captura de pantalla de la herramienta Generador de htpasswd con la entrada de ejemplo «sysfenix-demo», Hash format en bcrypt (recommended, htpasswd -B), Bcrypt cost factor (2^cost rounds), bcrypt format only en 10
Generador de htpasswd en pleno proceso: la entrada de ejemplo «sysfenix-demo», Hash format en bcrypt (recommended, htpasswd -B), Bcrypt cost factor (2^cost rounds), bcrypt format only en 10.
Captura de pantalla del resultado de Generador de htpasswd mostrando la salida generada «sysfenix-demo:$2y$10$peAeskQkt8PzxKFLmD/45O7GrTE…»
El resultado final: la salida generada «sysfenix-demo:$2y$10$peAeskQkt8PzxKFLmD/45O7GrTE…». El enlace de descarga es una URL blob local: el archivo nunca sale de tu dispositivo.

Preguntas frecuentes

¿En qué caja pego el nombre de usuario, y cuál es la contraseña?

Esta herramienta reutiliza el diseño de dos cajas de comparación de texto del sitio, así que las etiquetas son genéricas. Pega el nombre de usuario en la caja etiquetada "Texto original", y la contraseña en la caja etiquetada "Texto modificado".

¿Se envía mi contraseña a un servidor en algún momento?

No. Tanto el hash bcrypt (mediante la librería bcryptjs) como el hash MD5-APR1 (una implementación propia del algoritmo de Apache) se ejecutan enteramente dentro de tu pestaña del navegador. Tu nombre de usuario y contraseña nunca salen de tu dispositivo, muchas webs de "generador de htpasswd" envían silenciosamente la contraseña que escribes a un backend para calcular el hash.

¿Cuál es la diferencia entre bcrypt y MD5-APR1, y cuál debería elegir?

Bcrypt (el valor por defecto, equivalente a `htpasswd -B`) es el formato moderno recomendado, tiene un factor de coste ajustable que lo mantiene deliberadamente lento de forzar por fuerza bruta incluso a medida que mejora el hardware, el mismo razonamiento detrás de la herramienta separada de Generador de Hash Bcrypt de este sitio. MD5-APR1 (equivalente a `htpasswd -m`, la propia variante no estándar de crypt con sal MD5 de Apache, no es lo mismo que un hash MD5 simple) es un formato más antiguo que se mantiene aquí por compatibilidad con instalaciones heredadas de Apache o herramientas que esperan específicamente hashes `$apr1$`. A menos que algo requiera específicamente MD5-APR1, usa bcrypt.

¿Por qué el hash bcrypt empieza con "$2y$" en lugar de "$2a$" o "$2b$"?

La librería bcryptjs subyacente que usa esta herramienta solo genera hashes marcados "$2b$", pero el propio comando htpasswd -B de Apache marca sus hashes bcrypt como "$2y$" en su lugar, así que esta herramienta reescribe el marcador para coincidir con esa convención. Esto es seguro para cualquier contraseña real (muy por debajo del límite interno de 256 bytes de bcrypt, donde "$2a$", "$2b$" y "$2y$" calculan de forma idéntica byte a byte), verificado directamente contra la propia librería bcryptjs, que valida correctamente un hash "$2y$" reescrito tanto para una contraseña correcta como incorrecta.

¿Puede un nombre de usuario contener caracteres especiales, como dos puntos?

Un archivo htpasswd usa dos puntos (":") como separador entre el nombre de usuario y el hash en cada línea, así que unos dos puntos dentro del propio nombre de usuario corromperían el archivo. Esta herramienta rechaza un nombre de usuario que contenga dos puntos con un error claro en lugar de producir silenciosamente una entrada rota.

¿Cómo uso realmente la línea generada?

Copia la línea completa "usuario:hash" que produce esta herramienta y pégala como su propia línea en el archivo .htpasswd de tu servidor (crea el archivo si aún no existe), y luego apunta la directiva AuthUserFile de Apache o auth_basic_user_file de Nginx a la ruta de ese archivo. Cada usuario obtiene su propia línea en el mismo archivo.

¿Se verificó realmente la implementación de MD5-APR1, o podría estar sutilmente equivocada?

Se verificó contra hashes de referencia reales generados de forma independiente, no simplemente confiada tras derivarla a mano. El propio comando `openssl passwd -apr1 -salt <sal> <contraseña>` de esta máquina (una implementación completamente separada y externa del mismo algoritmo) se ejecutó para 8 combinaciones distintas de contraseña/sal (incluyendo una contraseña vacía, una contraseña de más de 16 bytes, una sal corta, y una contraseña UTF-8 de varios bytes, esta última verificada byte a byte mediante el modo -stdin de openssl para descartar una recodificación del shell), y cada una coincidió exactamente con la propia salida de esta herramienta. Esos valores de referencia exactos están fijados en la batería de pruebas automatizadas de esta herramienta.

Herramientas relacionadas