Gerador PHP password_hash()
Execute o password_hash() do PHP com o algoritmo e o custo de sua escolha.
Como usar Gerador PHP password_hash()
- Digite a senha que deseja fazer o hash.
- Escolha o algoritmo — PASSWORD_DEFAULT e PASSWORD_BCRYPT usam o fator de custo; as opções Argon2 o ignoram.
- Clique em Executar password_hash() e copie o hash resultante.
Sobre Gerador PHP password_hash()
Esta é a própria função password_hash() do PHP, executada no servidor exatamente como seria executada no seu código. Escolha o algoritmo através das mesmas constantes que o PHP usa — PASSWORD_DEFAULT, PASSWORD_BCRYPT, PASSWORD_ARGON2I ou PASSWORD_ARGON2ID —, defina um custo, e você recebe de volta a string exata que a função produz, além do detalhamento que password_get_info() reporta. É a forma rápida de ver o que uma determinada senha e configuração realmente geram, sem precisar rodar um script.
Duas coisas são verdadeiras para todo hash aqui e valem a pena entender. Primeiro, a saída é salgada automaticamente, portanto executar a mesma senha duas vezes gera dois hashes diferentes — isso é correto, não um bug, e é por isso que você nunca deve comparar hashes refazendo o hash. Você verifica uma senha com password_verify($password, $hash), que lê o sal e o custo a partir do hash armazenado e faz a comparação por você. Segundo, o custo (bcrypt) e os parâmetros de memória e tempo (Argon2) são deliberadamente lentos: eles definem o quão caro é cada tentativa para um invasor, portanto um custo mais alto é mais seguro, mas demora mais. Esta ferramenta limita o bcrypt ao custo 12 e usa parâmetros Argon2 fixos para que um endpoint público não possa ser transformado em um dreno de CPU.
O PASSWORD_DEFAULT é bcrypt em todas as versões do PHP até hoje, mas é definido como "o que quer que o PHP atualmente considere melhor", portanto pode mudar em uma versão futura — o que é exatamente o motivo pelo qual você armazena o algoritmo dentro do hash e deixa o password_verify() resolver isso. Para a maioria dos novos projetos, o Argon2id é a melhor prática atual. Observe que o bcrypt ignora silenciosamente qualquer conteúdo além dos primeiros 72 bytes de uma senha, portanto esta ferramenta rejeita uma senha mais longa em vez de fazer o hash de uma versão truncada. Precisa verificar um hash em vez de criar um? Use o verificador de bcrypt e Argon2, ou compare algoritmos com o gerador Argon2. As senhas são hasheadas e descartadas — nunca registradas ou armazenadas.
Perguntas frequentes
Qual algoritmo devo escolher?
Para novos projetos, PASSWORD_ARGON2ID é a melhor prática atual onde a sua versão do PHP o suporta. PASSWORD_DEFAULT também é uma escolha segura e portátil — é bcrypt hoje e o PHP o atualiza ao longo do tempo. O simples PASSWORD_BCRYPT é adequado e universalmente disponível.
Por que a mesma senha gera um hash diferente a cada vez?
Porque password_hash() gera um novo sal aleatório a cada chamada e o armazena dentro da saída. É exatamente isso que você deseja — impede que duas senhas idênticas produzam hashes idênticos. Nunca compare senhas refazendo o hash; use password_verify() em vez disso.
O que o fator de custo faz?
Para bcrypt (e PASSWORD_DEFAULT), ele define quantas rodadas de trabalho cada hash exige — cada +1 aproximadamente dobra o tempo. Quanto maior, mais resistente a ataques de força bruta, mas mais lento para calcular. As opções Argon2 ignoram esse custo e usam parâmetros fixos de memória e tempo.
Como eu verifico uma senha em relação a um desses hashes mais tarde?
Chame password_verify($password, $hash). Ela lê o algoritmo, o sal e o custo a partir do hash armazenado e retorna true ou false. Você não precisa saber ou armazenar o algoritmo separadamente — ele faz parte da string do hash.
É seguro fazer o hash de uma senha real aqui?
A senha é enviada ao servidor, hasheada e imediatamente descartada — nada é registrado ou armazenado, e a resposta carrega um cabeçalho no-store. Ainda assim, para uma senha que você realmente usa em produção, gerar o hash dentro do seu próprio ambiente é sempre a escolha mais cautelosa.

