Como usar
- Cole um hash. Remova rótulos como 0x, sha256= ou sha384-, mas mantenha os hashes de senha inteiros, incluindo um $, { ou * no início.
- Leia o resultado: a forma detectada e o tamanho em bits e, em seguida, os Algoritmos possíveis, com os mais prováveis destacados. O fator de custo do bcrypt, ou as rodadas do sha256crypt, do sha512crypt e do PBKDF2, aparece quando a string os contém.
- Para os candidatos MD5, SHA-1, SHA-256, SHA-512, CRC-32 e CRC-32C, o botão Abrir ferramenta leva você à calculadora correspondente.
- Se você conhece ou suspeita qual é o texto original, digite-o em Verificar com um texto para ver qual algoritmo reproduz o hash.
Como um hash é identificado
Todo algoritmo de hash tem um tamanho de saída fixo, e o hex usa dois caracteres por byte, então o comprimento de uma string hex é a pista mais forte. A ferramenta também verifica o conjunto de caracteres e procura os prefixos que os formatos de hash de senha colocam no início.
| Caracteres hex | Bits | Algoritmos comuns |
|---|---|---|
| 8 | 32 | CRC-32, CRC-32C e Adler-32 |
| 32 | 128 | MD5, NTLM e MD4 |
| 40 | 160 | SHA-1 e RIPEMD-160 |
| 56 | 224 | SHA-224 e SHA3-224 |
| 64 | 256 | SHA-256, SHA3-256, BLAKE2s e Keccak-256 |
| 96 | 384 | SHA-384 e SHA3-384 |
| 128 | 512 | SHA-512, SHA3-512, BLAKE2b e Whirlpool |
Só o comprimento não resolve a questão, porque um bom hash parece um dado aleatório e não traz nenhuma marca do algoritmo que o gerou. Um valor de 32 caracteres pode ser MD5, MD4 ou NTLM, que o Windows usa para as senhas das contas (MD4 da senha em UTF-16LE). Por isso, a ferramenta ordena os candidatos pelo quanto são comuns: MD5 primeiro, ou NTLM primeiro quando o hash está todo em maiúsculas, como algumas ferramentas de extração de senhas do Windows o exibem. Da mesma forma, o Keccak-256 do Ethereum e o SHA3-256 padronizado diferem apenas no preenchimento, mas ambos geram 64 caracteres hex.
Resumos em Base64 e formatos de hash de senha
Alguns sistemas escrevem resumos em Base64 em vez de hex: 24 caracteres para 16 bytes (MD5, como no cabeçalho Content-MD5), 28 para SHA-1, 44 para SHA-256, 64 para SHA-384 (como nos atributos de Subresource Integrity) e 88 para SHA-512. A ferramenta converte o comprimento de volta para bytes e lista os mesmos candidatos. A falta de preenchimento e os caracteres seguros para URL são aceitos, mas remova antes um prefixo como sha384-.
Os formatos de hash de senha descrevem a si mesmos: um prefixo indica o algoritmo, e o salt e as configurações de custo ficam gravados na própria string. Os formatos modernos usam salt e são lentos de propósito; os formatos LDAP e MySQL das duas últimas linhas são construções rápidas com SHA-1, e só o {SSHA} acrescenta um salt.
| Começa com | Formato | Onde costuma aparecer |
|---|---|---|
$2a$, $2b$, $2y$ | bcrypt, sempre com 60 caracteres; os dois dígitos seguintes são o fator de custo, e cada unidade a mais dobra o trabalho | Frameworks web, password_hash() do PHP |
$argon2id$ | Argon2id com parâmetros de memória (m), tempo (t) e paralelismo (p) | Aplicações modernas; recomendado pela OWASP |
$6$, $5$ | sha512crypt, sha256crypt, com rounds= opcional | /etc/shadow no Linux |
$y$ | yescrypt | /etc/shadow em muitas distribuições Linux atuais |
$1$, $apr1$ | md5crypt, Apache MD5 | Sistemas Unix mais antigos, .htpasswd |
pbkdf2_sha256$ | PBKDF2-SHA256 com o número de iterações | Django |
{SHA}, {SSHA} | SHA-1, SHA-1 com salt | Diretórios LDAP |
* e 40 dígitos hex | PASSWORD() do MySQL 4.1+ | Tabelas de usuários do MySQL |
Identificar não é quebrar
Um hash é unidirecional. O identificador só analisa o formato da string: ele não consegue revelar, descriptografar nem consultar a entrada, e não envia nada a um servidor ou a um banco de dados online. A única forma de descobrir uma entrada é testar candidatos e calcular o hash de cada um, que é o que ferramentas de recuperação de senhas como hashcat e John the Ripper fazem depois de conhecer o algoritmo. Formatos lentos e com salt, como bcrypt e Argon2, existem justamente para tornar essas tentativas caras. Só teste hashes com os quais você tem autorização para trabalhar.
Verificar com um texto testa um palpite específico. A verificação calcula o hash do texto que você digita, como UTF-8, com MD5, SHA-1, SHA-256, SHA-384, SHA-512, CRC-32 e CRC-32C, e informa qual resultado é igual ao hash, esteja ele escrito em hex (maiúsculas ou minúsculas) ou em Base64. Ela não consegue confirmar hashes de senha com salt nem HMACs, porque eles também dependem de um salt ou de uma chave secreta; para um valor com chave, use o gerador de HMAC com a chave.
Perguntas frequentes
Esta ferramenta pode me mostrar o texto ou a senha original?
Não. Ela apenas indica o algoritmo provável. Funções de hash não podem ser revertidas; os "descriptografadores de hash" online procuram o valor em tabelas de hashes de palavras comuns e de senhas vazadas, o que só funciona com entradas fracas e sem salt.
Por que vários algoritmos aparecem para um mesmo hash?
Algoritmos com o mesmo tamanho de saída produzem strings com o mesmo comprimento e o mesmo conjunto de caracteres, e nada dentro do hash registra qual deles foi usado. O candidato mais provável aparece primeiro, de acordo com o quanto cada algoritmo é comum. Para ter certeza, calcule o hash de novo a partir de uma entrada conhecida.
Uma string hex de 32 caracteres é sempre MD5?
Geralmente, mas nem sempre. NTLM, MD4, MD2 e RIPEMD-128 têm o mesmo comprimento, assim como qualquer valor de 128 bits escrito em hex, como um UUID sem hifens ou um token aleatório. O contexto decide: um hash de senha do Windows indica NTLM; a soma de verificação de um arquivo indica MD5.
Por que Verificar com um texto não encontra nenhuma correspondência?
echo acrescenta uma, a menos que você use echo -n ou printf), espaços ou maiúsculas e minúsculas diferentes, um texto cujo hash foi calculado em uma codificação diferente de UTF-8, um salt ou uma chave, como em hashes de senha e HMACs, ou um algoritmo que a verificação não cobre, como SHA-3, BLAKE2 ou NTLM.É seguro colar um hash de senha aqui?
A análise roda inteiramente no seu navegador, e o hash não é transmitido nem armazenado. Ainda assim, um hash de senha de um sistema real permite que qualquer pessoa que o tenha teste palpites offline, então trate esses hashes como informação sensível e mantenha-os fora de tickets, chats e capturas de tela.