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

257
Visualizações
Reconstruir/verificar el hash de contraseña Bcrypt de Ruby on Rails en Javascript

Tengo que reconstruir un proyecto de Ruby on Rails a Node.js. Bcrypt se usó para cifrar contraseñas en el proyecto Ruby y estoy tratando de reconstruir el mismo hash para poder copiar la contraseña codificada y los usuarios pueden iniciar sesión con las mismas credenciales en la versión del nodo.

Este hash $2a$11$j2IA8cPRFFC4YOXTl5kb9eF02fwNdLyFAPOvflQ3h/QdX8mE1SNK2 se usa para la contraseña Test1234 . Revisé el código de Ruby on Rails y vi la siguiente función para codificar una contraseña

Información general

 COST = 11 SALT = 1234567890

crear hash

 def password_hash(password) pwd = "#{password}#{SALT}" ::BCrypt::Password.create(pwd, cost: COST) end

¿Coinciden las contraseñas?

 def password_match?(password = nil) password ||= @params[:password] encrypted_password = get_encrypted_password return false if !encrypted_password || encrypted_password.size < 8 pwd = "#{password}#{SALT}" BCrypt::Password.new(encrypted_password) == pwd end def get_encrypted_password return unless @account @account.encrypted_password end

Por lo que sé algo sobre Ruby, esto significa que en la función password_match , pwd sería Test12341234567890 y BCrypt::Password.new($2a$11$j2IA8cPRFFC4YOXTl5kb9eF02fwNdLyFAPOvflQ3h/QdX8mE1SNK2) comprueba si Test12341234567890 (pwd) .

Cuando uso un verificador de Bcrypt en línea como https://bcrypt.online/ e ingreso el hash junto con el valor de pwd, no obtengo una coincidencia.

También traté de usar el método bcrypt.compare en el paquete de Javascript, pero tampoco funcionó.

¿Qué me estoy perdiendo?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Entonces hicimos un oopsie y resolvimos este problema en los comentarios. Aquí hay un resumen de todo como respuesta.

Yo:

Probé su función password_hash con "Test1234" y la sal que proporcionó. Obtuve $2a$11$bhdYASCaEPv/0HXv3OFtIupv8CgHFoEWkMonShKnNN1fkmRIg.07S como resultado, lo ejecuté a través del verificador en línea que vinculó y obtuve "El hash proporcionado coincide con el texto sin formato proporcionado".

BCrypt::Password.new(password_hash("Test1234")) == "Test12341234567890" También funciona bien y devuelve verdadero.

También probé Node.js con bcryptjs e hice bcrypt.compareSync('Test12341234567890', "$2a$11$bhdYASCaEPv/0HXv3OFtIupv8CgHFoEWkMonShKnNN1fkmRIg.07S"). También funciona bien y devuelve verdadero.

Thor:

Sí, ese es un nuevo hash que creaste con los mismos métodos. Pero por alguna razón, el hash ya creado $2a$11$j2IA8cPRFFC4YOXTl5kb9eF02fwNdLyFAPOvflQ3h/QdX8mE1SNK2 para la contraseña Test1234 que actualmente está almacenado en la base de datos no pasa la prueba de verificación en línea y la prueba compareSync en node.js

Yo:

Eso debería darle la idea de que el problema no está en la función de creación de hash de Ruby, ni en la función de prueba de hash de Node, sino en otro lugar (que técnicamente está fuera del alcance de esta pregunta). Tal vez su base de datos no almacene el hash completo por alguna razón, o lo almacene de manera incorrecta. Tal vez algo en algún lugar elimina o escapa algunos caracteres en el hash, dejándote con uno incompleto. Quizá algo de lo anterior le suceda a la sal. Tal vez el hash en la base de datos fue generado por una función hash diferente o más antigua. Tal vez la sal ha cambiado.

Thor:

¡Gracias por el comentario! Con su comentario descubrí que usaron una sal diferente a la que está dentro del archivo .env. Se almacenó en las variables de configuración de Heroku. ¡Todo está funcionando ahora!

about 4 years ago · Juan Pablo Isaza 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