Gerador de Hash de Senha MySQL
Gere um hash PASSWORD() do MySQL 4.1+ para servidores MySQL legados.
Como usar Gerador de Hash de Senha MySQL
- Digite ou cole a senha na caixa.
- O hash de 41 caracteres aparece enquanto você digita, começando com um asterisco.
- Copie-o diretamente para sua linha legada de mysql.user.
Sobre Gerador de Hash de Senha MySQL
Esta é a função PASSWORD() do MySQL, tal como funciona desde o MySQL 4.1 em diante. O algoritmo é SHA-1 aplicado duas vezes — SHA1(SHA1(senha)) sobre os bytes brutos — com o resultado escrito em hexadecimal maiúsculo atrás de um asterisco inicial, totalizando 41 caracteres. O asterisco não faz parte do digest; é um marcador que informa ao MySQL que este é o formato da era 4.1, e não o hash mais curto de 16 caracteres que existia antes dele. Se quiser ver a primitiva subjacente sozinha, nosso gerador de SHA-1 faz uma única passagem.
Observe o que está faltando: não há salt. Duas contas com a mesma senha obtêm a mesma string de 41 caracteres, e o SHA-1 é rápido, então esse formato oferece muito pouca resistência a um atacante que tenha acesso à sua tabela mysql.user. O MySQL sabe disso — o PASSWORD() foi descontinuado no MySQL 5.7 e removido totalmente no MySQL 8.0, que usa o caching_sha2_password como seu plugin de autenticação padrão.
Então o caso de uso honesto é legado: você está trabalhando com um servidor antigo, ou precisa definir diretamente uma linha de mysql.user em vez de usar SET PASSWORD, ou está migrando contas de um sistema que ainda armazena esses hashes. Tudo isso é normal. O que você não deve fazer é tomar emprestado esse formato para as senhas da sua própria aplicação — ele é sem salt, rápido e descontinuado pelo próprio fornecedor. Use bcrypt em vez disso.
Perguntas frequentes
Por que o hash começa com um asterisco?
O asterisco marca o formato do MySQL 4.1+ e o distingue do hash mais antigo de 16 caracteres anterior ao 4.1. É um prefixo, não parte do digest — o hash em si são os 40 caracteres hexadecimais depois dele, totalizando 41.
O PASSWORD() ainda existe no MySQL 8?
Não. Foi descontinuado no MySQL 5.7 e removido no MySQL 8.0, que usa caching_sha2_password por padrão. Esta ferramenta é para servidores legados e migrações.
Por que ser sem salt e rápido é um problema aqui?
Sem salt, senhas idênticas produzem hashes idênticos em todas as contas, então uma única tabela de consulta pré-calculada ataca toda a tabela de uma vez e duplicatas ficam visíveis à primeira vista. O SHA-1 também é extremamente rápido, então uma tabela mysql.user roubada pode ser atacada a taxas enormes. O hash duplo não desacelera isso de forma significativa.
Posso usar isso para as senhas dos usuários da minha aplicação?
Por favor, não. É sem salt, rápido e removido do MySQL moderno. Armazene hashes bcrypt ou Argon2 em uma coluna normal em vez disso.
Minha senha é armazenada?
Não. Ela é enviada ao nosso servidor para ser hasheada, porque os navegadores não conseguem calcular SHA-1 exatamente nesta forma de dupla passagem, depois é hasheada e descartada imediatamente — nunca registrada, nunca armazenada.

