Pular para o conteúdo
Todos os conceitos

Reconhecer o tipo de hash

O formato de um hash (o tamanho e o começo) já diz qual algoritmo o gerou.

Numa auditoria, a primeira coisa a fazer com um hash não é quebrá-lo: é reconhecer o que ele é. O formato entrega o algoritmo, e o algoritmo diz o quanto aquela senha resiste.

Os mais comuns:

Aparência Algoritmo Observação
32 símbolos hex MD5 rápido, antigo, não use para senha
40 símbolos hex SHA-1 rápido, quebrado, não use para senha
64 símbolos hex SHA-256 rápido; bom para integridade, não para senha sozinho
começa com $2b$ (ou $2a$, $2y$) bcrypt lento e com sal, bom para senha
começa com $6$ sha512crypt com sal, aceitável
começa com $argon2 Argon2 lento e com sal, recomendado

"Hex" são os símbolos de 0 a 9 e de a a f. Os que começam com $ trazem o esquema, o custo e o sal embutidos, separados por $. Por exemplo, $2b$12$... é bcrypt com custo 12.

formato algoritmo para senha 32 hex MD5 rápido, fraco 40 hex SHA-1 rápido, fraco 64 hex SHA-256 rápido $2b$… bcrypt lento, com sal $6$… sha512crypt com sal $argon2… Argon2 lento, com sal
Pelo tamanho e pelo começo: 32 hex é MD5, 40 é SHA-1, 64 é SHA-256; e o que começa com cifrão traz o esquema embutido, como bcrypt ou Argon2.

Em Python, len(h) == 32 e só com símbolos hex sugere MD5; h.startswith("$2b$") sugere bcrypt. Reconhecer o formato ordena o trabalho: os hashes rápidos e sem sal (MD5, SHA-1) caem a ataques de dicionário em segundos; os lentos e com sal (bcrypt, Argon2) resistem muito mais.

Aparece nestes desafios