md5()
Artigo sobre a função PHP md5(), usada para calcular o hash MD5 de uma string. Útil para trabalhar com strings em PHP.
A função PHP md5() calcula o hash MD5 de uma string. MD5 (Message-Digest Algorithm 5) é uma função de sentido único: transforma qualquer entrada em um valor fixo de 128 bits, e não é possível reverter o resultado para obter a string original. Esta página aborda a sintaxe, os parâmetros, exemplos executáveis, quando o MD5 ainda é adequado e quando é necessário usar algo mais seguro.
Sintaxe
md5(string $str, bool $raw_output = false): stringA função aceita dois parâmetros:
$str— a string de entrada a ser processada pelo hash.$raw_output— boolean opcional. Quandofalse(o padrão),md5()retorna uma string hexadecimal de 32 caracteres em letras minúsculas. Quandotrue, retorna o hash binário bruto de 16 bytes.
O valor de retorno sempre tem o mesmo comprimento para um determinado modo, independentemente do tamanho da entrada — uma string de um caractere e um arquivo de um megabyte produzem o mesmo digest hexadecimal de 32 caracteres.
Exemplo básico
Aqui, $string contém algum texto e md5() retorna seu digest hexadecimal. A saída é a string hexadecimal de 32 caracteres:
ed076287532e86365e841e92bfc50d8cA mesma entrada sempre produz o mesmo digest, portanto o MD5 é determinístico — útil para comparar ou indexar dados, mas também significa que um atacante pode pré-calcular hashes de valores comuns.
Saída binária bruta
<?php
$hash = md5("Hello World!", true);
echo bin2hex($hash);
?>Quando $raw_output é true, md5() retorna o hash binário bruto de 16 bytes em vez de hex. Isso ocupa metade do tamanho da forma hexadecimal, o que é conveniente ao armazenar o digest em uma coluna de banco de dados BINARY(16). Aqui passamos pelo bin2hex() para exibi-lo, então a saída é idêntica ao modo padrão:
ed076287532e86365e841e92bfc50d8cQuando usar MD5 (e quando não usar)
O MD5 é rápido, mas criptograficamente comprometido — colisões (duas entradas diferentes com o mesmo hash) podem ser produzidas de forma deliberada. Escolha conforme o caso de uso:
- Adequado: checksums rápidos sem fins de segurança, chaves de cache, deduplicação de arquivos ou compatibilidade com sistemas legados que já armazenam digests MD5.
- Inadequado: armazenamento de senhas e assinaturas digitais. Use
password_hash()para senhas, ehash('sha256', ...)ou algo mais forte para integridade que possa ser alvo de um atacante.
<?php
// Bad — never store passwords like this:
$bad = md5($password);
// Good — purpose-built, salted, slow on purpose:
$good = password_hash($password, PASSWORD_DEFAULT);Aviso: Não use
md5()para armazenamento de senhas ou assinaturas digitais. É adequado apenas para checksums sem fins de segurança ou compatibilidade com sistemas legados.
Funções relacionadas
sha1()— produz um hash mais longo de 160 bits; também não é mais resistente a colisões.crc32()— um checksum rápido de 32 bits para detecção de erros, não para hashing.bin2hex()— converte a saída binária bruta demd5(..., true)em uma string hexadecimal legível.