Verificação de hash Argon2 | Compare uma senha com um hash codificado
Compare uma senha com um hash Argon2 codificado existente ($argon2id$...) e veja se coincidem. Todo o cálculo é feito no navegador; nada é enviado ao servidor.
Verificar um hash Argon2
O Argon2 venceu a Password Hashing Competition em 2015 e é hoje **o hash de palavras-passe mais recomendado para trabalhos novos.** A sua principal diferença face ao bcrypt é permitir ajustar **o uso de memória para além do tempo de cálculo.** As GPU e o hardware dedicado sobressaem na aritmética paralela, mas têm dificuldade em atribuir a cada núcleo uma porção grande de memória, pelo que exigir memória eleva consideravelmente o custo de um ataque por força bruta.
Um hash Argon2 assume a forma `$argon2id$v=19$m=19456,t=2,p=1$sal$resumo`, com **os parâmetros e o sal embutidos na própria cadeia.** A verificação não precisa, portanto, de qualquer lista à parte de parâmetros: bastam o hash e a palavra-passe. Esta ferramenta realiza essa verificação. **Tudo é calculado no seu navegador, e nem a palavra-passe nem o hash que introduzir são alguma vez enviados para um servidor.**
Como verificar
- Cole o hash Argon2 Introduza tal qual a cadeia codificada que começa por `$argon2id$`.
- Introduza a palavra-passe Escreva a palavra-passe em texto claro que deseja confrontar.
- Execute a verificação **Como o algoritmo foi concebido para consumir muita memória, isto pode demorar alguns segundos.** É o comportamento previsto.
- Leia o resultado É-lhe indicado se ambos coincidem.
Dicas para aproveitar melhor
- Cole diretamente o hash codificado (a string que começa com $argon2id$) gerado pela ferramenta Cálculo de hash Argon2.
- O hash codificado já contém a variante, o custo de memória, o número de iterações e o salt, então não é preciso informar esses parâmetros separadamente ao verificar.
- Se o formato do hash estiver incorreto (por exemplo, caracteres faltando ou quebras de linha indevidas ao copiar), uma mensagem de erro será exibida. Confira se copiou o texto completo corretamente.
- Se o resultado indicar que não coincidem, verifique se não há diferenças de maiúsculas/minúsculas ou espaços em branco extras antes ou depois da senha.
Situações em que ajuda
Verificar uma implementação de autenticação
Confirme com um par conhecido de hash e palavra-passe que o seu próprio código de acesso verifica correctamente.
Confirmar uma migração
Estabeleça de antemão se os hashes trazidos de outro sistema podem ser verificados tal como estão.
Inspeccionar os parâmetros escolhidos
Leia os valores `m`, `t` e `p` embutidos na cadeia para ver que custo foi configurado.
Fechar o círculo com o gerador
Confirme que um valor produzido pelo gerador de hashes Argon2 se verifica correctamente aqui.
Termos do Argon2 explicados
- Argon2id
- A variante que combina resistência a ataques de canal lateral com resistência a ataques por GPU. **É a escolha padrão em trabalhos novos.**
- m (custo de memória)
- A quantidade de memória usada, expressa em kibibytes. **É o parâmetro central que torna o Argon2 resistente a ataques por GPU.**
- t (custo de tempo)
- O número de iterações. Elevá-lo alonga o cálculo e com ele o custo para o atacante.
- p (paralelismo)
- O número de faixas processadas em paralelo, ajustado ao número de núcleos do servidor.
- Sal
- Dados aleatórios distintos para cada hash. **A mesma palavra-passe dá um hash diferente de cada vez, o que anula os ataques com tabelas arco-íris.**
- Hash codificado
- O formato que agrega nome do algoritmo, parâmetros, sal e resumo numa única cadeia. Contém tudo o que a verificação precisa.
Perguntas frequentes
Curiosidade — Por que basta 'comparar hashes' para verificar uma senha
À primeira vista, a verificação de senha parece ser um processo de 'comparar diretamente a senha armazenada com a senha digitada', mas na prática funciona de um jeito bem diferente. O servidor (ou, como nesta ferramenta, o processamento feito no lado do cliente) aplica novamente à senha digitada o mesmo algoritmo e o mesmo salt usados no momento em que ela foi armazenada, e apenas compara se o resultado coincide com o hash já salvo. A senha original em si nunca é comparada diretamente — a vantagem desse método é que basta verificar se dois hashes são iguais.
Esse mecanismo funciona porque funções de hash como o Argon2 são 'determinísticas': com a mesma entrada, o mesmo salt e os mesmos parâmetros, o resultado será sempre idêntico. Como a string do hash codificado (no formato $argon2id$v=19$m=...$salt$hash) já contém embutidos o salt e todos os parâmetros usados no cálculo original, não é necessário informá-los novamente na verificação — o próprio hash já permite recalcular tudo com exatidão.
É justamente graças a essas duas propriedades — a 'unidirecionalidade' (não é possível reverter o hash para obter a senha original) e o 'determinismo' (mesma entrada gera sempre a mesma saída) — que os serviços conseguem verificar logins com segurança sem nunca armazenar a senha em texto simples do usuário. Mesmo que o banco de dados seja vazado, o atacante só terá acesso aos valores de hash, e com um algoritmo computacionalmente custoso como o Argon2, um ataque de força bruta para recuperar a senha original levaria um tempo extremamente longo.