Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

397
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!