W3docs

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): string

A função aceita dois parâmetros:

  • $str — a string de entrada a ser processada pelo hash.
  • $raw_output — boolean opcional. Quando false (o padrão), md5() retorna uma string hexadecimal de 32 caracteres em letras minúsculas. Quando true, 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

php— editable, runs on the server

Aqui, $string contém algum texto e md5() retorna seu digest hexadecimal. A saída é a string hexadecimal de 32 caracteres:

ed076287532e86365e841e92bfc50d8c

A 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:

ed076287532e86365e841e92bfc50d8c

Quando 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, e hash('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 de md5(..., true) em uma string hexadecimal legível.

Prática

Prática
Qual é a função principal de md5() em PHP?
Qual é a função principal de md5() em PHP?
Was this page helpful?