Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

392
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda