O armazenamento de senhas não é lugar para criatividade. O caminho seguro é bem estabelecido.

A primeira regra

Nunca armazene senhas com um hash rápido comum (MD5, SHA-1, SHA-256) nem com criptografia reversível. Um hash rápido é exatamente o que a força bruta vence, e criptografia reversível significa que uma chave roubada expõe todas as senhas.

Escolha um algoritmo

Em ordem de preferência: Argon2id como padrão, depois scrypt, depois bcrypt e PBKDF2 apenas onde a conformidade FIPS obriga. Todos salgam automaticamente ou devem receber um salt único.

Defina os parâmetros

Ajuste o fator de trabalho para que um único hash leve um tempo real escolhido no seu hardware, e eleve-o conforme o hardware melhora. A OWASP publica pontos de partida atuais, por exemplo configurações de memória e iteração do Argon2id e fatores de custo do bcrypt.

Sal e, opcionalmente, pepper

Use um salt aleatório único por senha; as bibliotecas cuidam disso. Você pode adicionar um segredo do lado do servidor, um pepper, mantido fora do banco de dados, para que um vazamento apenas do banco não baste.

Prefira comprimento a regras

Permita frases-senha longas, verifique novas senhas contra listas de vazamentos conhecidos como o NIST recomenda e evite regras de composição que prejudicam a usabilidade sem adicionar entropia.

Migrando de um esquema fraco

Ao sair de um hash rápido, ou re-hasheie cada senha no próximo login ou envolva o hash antigo dentro da nova KDF, e nunca mantenha a versão em hash rápido por perto.