md5_file

md5_file($soubor, $binarni)

Vrátí kontrolní součet MD5 obsahu souboru jako 32 šestnáctkových znaků, při chybě false. Soubor čte po částech, takže zvládne i velké soubory.

Parametry

  • $soubor – cesta k souboru nebo adresa.
  • $binarni – nepovinný, s true vrátí 16 bajtů místo textu.

Příklady

$soubor = sys_get_temp_dir() . "/garth-ukazka.txt";
file_put_contents($soubor, "Ahoj");
echo md5_file($soubor); // 457cec4d12a2efe9c8eb46b0baf67a29
// stejný výsledek jako md5 z obsahu
var_dump(md5_file($soubor) === md5("Ahoj")); // bool(true)
// jiný obsah, úplně jiný součet
file_put_contents($soubor . ".2", "Ahoj!");
echo md5_file($soubor . ".2"); // 6e2bdffff85476f0d816a678b7df4ad7
// stejné soubory poznáte bez porovnávání obsahu
var_dump(md5_file($soubor) === md5_file($soubor . ".2")); // bool(false)
echo strlen(md5_file($soubor, true)); // 16
unlink($soubor);
unlink($soubor . ".2");

Na co si dát pozor

  • MD5 se hodí na kontrolu, jestli se soubor změnil nebo poškodil. Proti úmyslnému podvržení nechrání, k tomu slouží hash_file() s algoritmem sha256.
  • Pro hesla MD5 nikdy nepoužívejte, na ně je password_hash().
  • Stejný součet u dvou souborů téměř jistě znamená stejný obsah. Název ani čas změny se do součtu nezapočítávají.
  • Na neexistující soubor vypíše varování a vrátí false.

Příbuzné funkce:
sha1_file()
filesize()
file_get_contents()
md5()