BrowserTools
Início / Codificadores / Gerador e Verificador de Bcrypt

Gerador e Verificador de Bcrypt

Gera hashes bcrypt de palavras-passe e verifica uma palavra-passe contra um hash existente, inteiramente no teu navegador.

A carregar Gerador e Verificador de Bcrypt… Se nada acontecer, ativa o JavaScript.

O bcrypt é uma função de hash de palavras-passe concebida em 1999 por Niels Provos e David Mazieres, criada especificamente para que as palavras-passe armazenadas resistam à quebra por força bruta. Ao contrário de resumos rápidos de uso geral como o MD5 ou o SHA-256, o bcrypt é deliberadamente lento e inclui um fator de custo ajustável que define quanto trabalho computacional cada hash exige. Cada hash bcrypt também incorpora um salt aleatório único, por isso dois utilizadores com a mesma palavra-passe produzem hashes completamente diferentes, e uma única cadeia de saída transporta tudo o que é preciso para verificar uma palavra-passe mais tarde: a versão do algoritmo, o custo, o salt e o resumo. Esse formato autossuficiente é a razão pela qual os hashes bcrypt podem ser armazenados diretamente numa coluna de base de dados.

Perguntas frequentes

As palavras-passe e os hashes que introduzo são enviados para algum lado?
Não. Tanto o hash como a verificação correm inteiramente no teu navegador usando uma implementação de bcrypt em JavaScript. Nada do que escreves é carregado, transmitido nem registado. A ferramenta continua a funcionar offline depois de a página carregar, por isso é segura para usar com credenciais reais enquanto testas ou aprendes.
O que é o fator de custo e que valor devo usar?
O fator de custo (o número a seguir ao segundo cifrão num hash) define quantas rondas de trabalho o bcrypt realiza, numa escala logarítmica. Cada incremento duplica aproximadamente o tempo por hash. Um custo de 10 é um valor predefinido habitual; 12 é mais forte mas mais lento. Escolhe o custo mais alto que o teu servidor consiga tolerar mantendo tempos de resposta de início de sessão aceitáveis, muitas vezes entre 100 e 250 milissegundos por hash.
Porque é que o bcrypt inclui um salt automaticamente?
Um salt são dados aleatórios misturados no hash para que palavras-passe idênticas produzam saídas diferentes, frustrando os ataques com tabelas arco-íris pré-calculadas. O bcrypt gera um salt aleatório novo para cada hash e incorpora-o diretamente na cadeia de saída, por isso não precisas de armazenar nem gerir salts em separado. O verificador lê o salt diretamente do hash armazenado.
Posso reverter um hash bcrypt para a palavra-passe?
Não. O bcrypt é uma função unidirecional, por isso não há operação de descodificação e esta ferramenta não tem modo de descodificação. A única forma de testar uma palavra-passe é aplicar o hash a uma candidata com o mesmo salt e custo e compará-la, que é exatamente o que o modo Verificar faz. Se um hash pudesse ser revertido, seria inútil para proteger palavras-passe.
Como sabe o modo Verificar se uma palavra-passe corresponde?
Extrai a versão do algoritmo, o fator de custo e o salt que estão armazenados dentro do hash bcrypt, volta a aplicar o hash à tua palavra-passe candidata com esses mesmos parâmetros, e verifica se o resumo resultante é igual ao armazenado. Este é o processo idêntico que um sistema de início de sessão usa, e é por isso que nunca precisas de armazenar a palavra-passe original em lado nenhum.
Em que difere o bcrypt do SHA-256 no Gerador de Hash?
O SHA-256 é um resumo criptográfico rápido pensado para somas de verificação, verificações de integridade e impressões digitais; é intencionalmente rápido, o que o torna uma má escolha para palavras-passe porque os atacantes podem tentar milhares de milhões de tentativas por segundo. O bcrypt é deliberadamente lento e com salt, concebido especificamente para encarecer a adivinhação de palavras-passe. Usa o Gerador de Hash para a integridade de ficheiros ou dados, e o bcrypt para armazenar palavras-passe.
O que significam os prefixos $2a$ e $2b$?
O marcador inicial identifica a variante de bcrypt que produziu o hash. $2a$ é a versão comum de longa data, enquanto $2b$ é uma variante corrigida que resolveu um erro de transbordo relacionado com entradas muito longas. Ambas têm amplo suporte e verificam-se corretamente. A parte a seguir ao marcador codifica o custo, e o resto contém o salt e o resumo juntos.
O bcrypt tem um limite de comprimento da palavra-passe?
Sim. O bcrypt só processa os primeiros 72 bytes da palavra-passe de entrada; tudo o que ultrapasse isso é ignorado. Para a maioria das palavras-passe isto é irrelevante, mas importa se pré-aplicas um hash ou concatenas valores longos antes do bcrypt. Se precisares de suportar entradas arbitrariamente longas, aplica primeiro um hash SHA-256 à palavra-passe ou usa uma função como o Argon2 que não tenha esse limite.

Sobre Gerador e Verificador de Bcrypt

Esta ferramenta tem dois modos. No modo Hash introduzes uma palavra-passe e escolhes um fator de custo de 8, 10 ou 12 rondas, e ela produz uma cadeia de hash bcrypt completa que começa por um marcador como $2a$ ou $2b$. Um custo mais alto duplica aproximadamente o trabalho a cada incremento, por isso 12 é nitidamente mais lento do que 10, que é o valor predefinido habitual. No modo Verificar colas um hash bcrypt existente e uma palavra-passe candidata, e a ferramenta indica se correspondem. A verificação funciona reexecutando o bcrypt com o salt e o custo extraídos do hash armazenado, e depois comparando o resultado, que é exatamente como um sistema de início de sessão verifica uma palavra-passe sem nunca a armazenar em texto simples.

Tudo corre localmente no teu navegador usando uma implementação de bcrypt em JavaScript. As palavras-passe e os hashes que introduzes nunca são carregados, transmitidos nem registados, o que torna a ferramenta segura para experimentar com credenciais reais enquanto aprendes, testas um backend ou preenches uma base de dados de desenvolvimento. Tem em conta que o bcrypt é uma função unidirecional: não há modo de descodificação, porque um hash correto não pode ser revertido para a palavra-passe original. É também distinta dos hashes rápidos da ferramenta Gerador de Hash. Usa o bcrypt (ou uma alternativa moderna como o Argon2) para armazenar palavras-passe, e reserva os resumos do tipo SHA para somas de verificação, verificações de integridade e impressões digitais que não sejam de palavras-passe.

Porque é que a lentidão é uma característica, não um defeito

A maioria do software é projetada para ser o mais rápida possível, mas o bcrypt foi deliberadamente concebido para ser lento, e essa decisão é todo o sentido. Quando Niels Provos e David Mazieres apresentaram o bcrypt na USENIX em 1999, construíram-no sobre o dispendioso passo de configuração de chave da cifra Blowfish e acrescentaram-lhe um fator de custo ajustável. A genialidade do design é que o custo não está fixado no algoritmo; à medida que os computadores ficam mais rápidos, os defensores podem simplesmente subir o custo para que a quebra de palavras-passe continue tão penosa como anos antes.

Isto importa porque a ameaça é assimétrica. Um servidor legítimo aplica o hash a uma palavra-passe por início de sessão, por isso um hash que demore um quinto de segundo mal se nota. Um atacante que rouba uma base de dados de palavras-passe, porém, quer tentar milhares de milhões de tentativas, e esse mesmo quinto de segundo por tentativa transforma uma tarde de quebra em séculos. Os hashes rápidos como o MD5 e o SHA-1 sem salt desmoronam-se perante as GPU modernas e o hardware especializado que testa dezenas de milhares de milhões de candidatos por segundo; a lentidão ajustável do bcrypt e o seu salt por palavra-passe travam ao mesmo tempo a força bruta e as tabelas arco-íris.

Como o fator de custo vive dentro de cada hash, um sistema pode atualizar a sua segurança de forma transparente ao longo do tempo. Quando um utilizador inicia sessão, o servidor pode verificar o custo incorporado no seu hash armazenado, e se estiver abaixo do objetivo atual, voltar a aplicar o hash à palavra-passe acabada de verificar com um custo mais alto e guardar o novo valor. O bcrypt envelheceu notavelmente bem desde 1999, e embora funções mais recentes como o scrypt e o Argon2 acrescentem dureza de memória para resistir ainda melhor a hardware especializado, o bcrypt continua a ser um valor predefinido sólido e amplamente suportado para o armazenamento de palavras-passe.

Apoiar