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()