Parâmetros de hashing de palavras-passe
Duas perguntas, resolvidas no seu navegador: as minhas definições atingem os mínimos da OWASP, e quantas iterações o meu hardware consegue realmente pagar?
Meça o seu próprio hardware
Executa PBKDF2 através do Web Crypto, cronometra-o e indica quantas iterações cabem no seu orçamento de tempo. Nada sai da página.
Ler antes de citar o número
Medido num separador do navegador, no aparelho que está a usar, não no seu servidor. A tomar como ordem de grandeza.
Verifique as suas definições atuais
Introduza o que a sua aplicação usa hoje. O veredicto compara-o com os mínimos publicados, nada mais.
Atinge o mínimo OWASP
Configuração atingida: m=19456 KiB, t=2, p=1
O paralelismo é mostrado mas não pontuado: a OWASP apresenta-o como um compromisso, não como um limiar.
Limiares lidos da OWASP Password Storage Cheat Sheet (2026-09-06)
Os mínimos publicados
São os valores listados pela OWASP Password Storage Cheat Sheet, transcritos sem interpretação. As cinco linhas Argon2id são apresentadas como equivalentes entre si, e as cinco de scrypt também: escolhe-se a que cabe no orçamento de CPU e RAM, não é exigido satisfazer as cinco.
Ordem de preferência indicada pela OWASP: Argon2id > scrypt > bcrypt > PBKDF2
Orçamento de tempo indicado: um hash deve demorar menos de um segundo. (1000 ms)
| Argon2id | memory | iterations (t) | parallelism (p) |
|---|---|---|---|
| 46 MiB | m=47104 | t=1 | p=1 |
| 19 MiB | m=19456 | t=2 | p=1 |
| 12 MiB | m=12288 | t=3 | p=1 |
| 9 MiB | m=9216 | t=4 | p=1 |
| 7 MiB | m=7168 | t=5 | p=1 |
| scrypt | N | r | p |
|---|---|---|---|
| 128 MiB | 2^17 | r=8 | p=1 |
| 64 MiB | 2^16 | r=8 | p=2 |
| 32 MiB | 2^15 | r=8 | p=3 |
| 16 MiB | 2^14 | r=8 | p=5 |
| 8 MiB | 2^13 | r=8 | p=10 |
| PBKDF2 | iterations |
|---|---|
| HMAC-SHA-256 | 600,000 |
| HMAC-SHA-512 | 220,000 |
| HMAC-SHA-1 | 1,400,000 |
| bcrypt | cost >= 10 |
O bcrypt limita ainda a entrada a 72 bytes, e a OWASP avisa contra um pré-hashing ingénuo, por causa do tratamento dos bytes nulos e do password shucking.
Limiares lidos da OWASP Password Storage Cheat Sheet (2026-09-06)
Porquê um banco de ensaio e não uma recomendação
Um número de iterações não é uma propriedade do algoritmo, é uma propriedade do seu hardware. Um valor confortável num servidor de 2026 pode bloquear um contentor partilhado. É por isso que a segunda metade desta página mede em vez de aconselhar.
A medição usa PBKDF2 através da API Web Crypto nativa do navegador. Nenhuma biblioteca é descarregada, nada é transmitido, e ambas as afirmações verificam-se no separador Rede do seu navegador.
O que esta medição não é
Um navegador não é o seu servidor de produção. O Web Crypto executa código nativo, mas executa-o no seu equipamento, dentro de um separador, ao lado de tudo o resto que tenha aberto. Leia o resultado como uma ordem de grandeza para a máquina que tem à frente, não como um banco de ensaio do seu backend. Argon2id e scrypt não são medidos aqui de propósito: nenhum é exposto pelo Web Crypto, e embarcar uma compilação WebAssembly mediria a compilação, não o seu servidor.
Perguntas frequentes
Que algoritmo escolher para código novo?
A OWASP coloca Argon2id em primeiro, depois scrypt se Argon2id não estiver disponível, depois bcrypt para sistemas antigos, depois PBKDF2 quando é exigida conformidade FIPS-140. Essa ordem é deles, não nossa.
A minha memória Argon2id é inferior a 47104 KiB. É uma reprovação?
Não necessariamente. A OWASP lista cinco configurações equivalentes, e uma memória menor é aceitável se o número de iterações subir para compensar: 19456 KiB com t=2, 12288 com t=3, 9216 com t=4, 7168 com t=5. O verificador desta página aprova as suas definições se atingirem qualquer uma das cinco.
Porque é que o verificador ignora o paralelismo?
Porque a OWASP apresenta-o como um compromisso, não como um limiar a ultrapassar. Mostramos o valor que introduz e apenas pontuamos memória e iterações. Dizê-lo é mais útil do que fingir uma precisão que a fonte não dá.
O banco de ensaio transmite a minha palavra-passe?
O banco de ensaio não usa a sua palavra-passe de todo. Deriva bits a partir de uma cadeia de sonda fixa e de um sal aleatório, apenas para cronometrar a operação. Nessa secção não existe qualquer campo de palavra-passe.
Quão atuais são estes números?
Foram lidos da OWASP Password Storage Cheat Sheet a 2026-09-06. A OWASP revê-os à medida que o hardware acelera: trate essa data como parte da resposta e siga a ligação à fonte para confirmar.