Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

393
Vistas
¿Cómo verificar contraseñas largas usando bcrypt?

Así que me encontré con este problema y no pude averiguar qué lo estaba causando. Implementé un flujo de autenticación usando JWT con tokens de acceso y actualización. Hice que los tokens de actualización caduquen después de un largo período de tiempo, y se pueden restablecer a la fuerza para evitar que los tokens de actualización robados se vuelvan a usar.

Para hacer esto, hago hash del token de actualización jwt usando bcrypt y lo almaceno en mi base de datos. Sin embargo, siempre obtengo un resultado verdadero cuando comparo el jwt sin procesar con el hash y no estoy seguro de por qué.

Busqué un poco y creo que esto sucede porque a bcrypt no le gustan los tokens de 191 caracteres y los recorta a una longitud máxima, y dado que la primera parte del jwt es similar, obtengo un resultado válido al comparar el hash . ¿Es esto cierto? Si es así, ¿cómo puedo extender la longitud máxima para que se ajuste a mis tokens o debo hacer un hash previo de los tokens antes de pasarlos a la función hash original?

 await bcrypt.compare('loooooooooooooooooooooooooooooooooooooooooooooooooooooooong', hash); // true await bcrypt.compare('loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong', hash); // also true

Cualquier ayuda es apreciada :)

Editar:

Bien, he estado pensando en esto por un tiempo y creo que he encontrado una buena solución.

Al firmar el token de actualización, también genero una contraseña aleatoria y la almaceno en la carga útil. En lugar de almacenar el hash del propio jwt, almaceno el hash de esta contraseña en mi base de datos. Entonces, cada vez que quiero verificar que el token de actualización no se haya bloqueado, primero verifico el token en sí y luego verifico la contraseña en la carga útil de mi hash almacenado. Si el token de actualización ya se ha actualizado, la contraseña en la carga útil ya no coincidirá con el hash del token de actualización recién firmado, por lo que no es válido.

¿Opiniones de futuros lectores?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

y los recorta a una longitud máxima, y dado que la primera parte del jwt es similar, obtengo un resultado válido al comparar el hash. ¿Es esto cierto?

Sí, es verdad.

No hay forma de "extender la longitud máxima" del algoritmo. bcrypt tiene una longitud máxima de contraseña . Dependiendo de la implementación del algoritmo, el límite real puede ser un poco diferente. Si realmente desea usar más que ese límite para codificar la contraseña, deberá buscar un algoritmo de cifrado diferente, que puede o no ser mejor que bcrypt incluso con un límite de caracteres más alto.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda