Olá. Provavelmente é uma pergunta estúpida, mas estamos migrando nosso fórum do XenForo para o Discourse. Temos um servidor de backend para autorização que envolve a conexão ao banco de dados e a verificação de credenciais na tabela de usuários.
O algoritmo bcrypt do XenForo funcionou como esperado e sem nenhum problema. No entanto, quando migramos para o Discourse, o algoritmo PBKDF2 não pareceu corresponder às minhas expectativas. Mesma senha exata, mesmo salt exato, mesmo número exato de iterações e comprimento, mas o hash de saída é diferente.
Tentei várias implementações diferentes do algoritmo PBKDF2, mas todas elas produzem o mesmo hash (diferente do do Discourse). Incluindo minha própria implementação.
Eu preferiria evitar mecanismos como OAuth2 ou SSO devido à sobrecarga adicional e ao trabalho extra que isso nos impõe.
Alguém já usou o Discourse para esses casos de uso e, se sim, como você resolveu esse problema?
Nós usamos principalmente a implementação crypto/bcrypt do Go para Xenforo. Os mesmos hashes de várias implementações de algoritmos pbkdf2 me sugerem que o Go possivelmente armazena strings ou converte strings para bytes de uma maneira um tanto diferente.
Terei que tentar isso amanhã (já é tarde por aqui). Se o OpenSSL me der o resultado desejado, então terei que procurar por bindings do OpenSSL para Go, ou terei que mudar para uma linguagem completamente diferente (que tenha bindings do OpenSSL) para o backend.
Desculpe, no momento não estou em posição de te dizer, pois os fusos horários são irritantes. Já é muito tarde por aqui e só poderei fazer isso no dia seguinte.
Esquece. Tive que usar a representação hexadecimal do salt como argumento, e não o salt decodificado como eu estava fazendo na postagem acima. Agora os hashes são iguais.