请问md5(file_contents_as_string)是否等于md5_file(/ path/to/file)?

Tom*_*Tom 30 php md5 md5-file

如果我做:

<?php echo md5(file_get_contents("/path/to/file")) ?>

...这将始终产生相同的哈希:

<?php echo md5_file("/path/to/file") ?>

pre*_*ldt 30

是的,他们返回相同:

var_dump(md5(file_get_contents(__FILE__)));
var_dump(md5_file(__FILE__));
Run Code Online (Sandbox Code Playgroud)

在我的情况下返回这个:

string(32) "4d2aec3ae83694513cb9bde0617deeea"
string(32) "4d2aec3ae83694513cb9bde0617deeea"
Run Code Online (Sandbox Code Playgroud)

编辑:看看这两个函数的源代码:https://github.com/php/php-src/blob/master/ext/standard/md5.c(第47和76行).它们都使用相同的函数来生成散列,除了md5_file()函数首先打开文件.

第二次编辑:基本上该md5_file()函数根据文件内容生成散列,而不是像文件名那样生成文件元数据.这与md5sumLinux系统工作方式相同.看这个例子:

pr@testumgebung:~# echo foobar > foo.txt
pr@testumgebung:~# md5sum foo.txt
14758f1afd44c09b7992073ccf00b43d  foo.txt
pr@testumgebung:~# mv foo.txt bar.txt
pr@testumgebung:~# md5sum bar.txt
14758f1afd44c09b7992073ccf00b43d  bar.txt
Run Code Online (Sandbox Code Playgroud)