为什么md5为两个不同的文件名返回相同的哈希值

时间:2014-04-24 12:30:22

标签: php md5

我有两个视频文件有不同的文件名。但是当我md5文件名时,两者都返回相同的哈希值。以下是文件名。

1 \测试\ downloadvideo \ ANS-70055040.hd.mp4

2 \测试\ downloadvideo \ ANS-70055298.hd.mp4

$this->_video_md5 = md5_file("\test\downloadvideo\ans-70055040.hd.mp4");
$this->_videoo_md51 = md5_file("\test\downloadvideo\ans-70055298.hd.mp4");

echo "md5".$this->_video_md5

将返回 md551f767588587184d13b8c9e6ed550166sh190d2078270d4ea1cb570b1de7 fb890bc761bda9a

echo "md5".$this->_videoo_md51 

将返回 md551f767588587184d13b8c9e6ed550166sh190d2078270d4ea1cb570b1de7 fb890bc761bda9a

如何为文件名获取两个不同的md5哈希值。

3 个答案:

答案 0 :(得分:2)

如上所述,md5|sha1_file返回文件内容的哈希值,不包括文件名。

一种可能的解决方案"将散列文件名和文件本身的散列的结果,这将是一个唯一的散列。

答案 1 :(得分:1)

如果要哈希文件名而不是文件内容,请使用md5("\test\downloadvideo\ans-70055298.hd.mp4");代替md5_file。

答案 2 :(得分:1)

要获得不同的哈希值,请更改文件的内容,因此文件不相同。

如果您只想检查文件名,请使用md5("filename")而不是md5_file("filename")

此外,你似乎没有引用文件名。他们应该在那里! 并逃脱反斜杠!

所以

md5_file(\test\downloadvideo\ans-70055298.hd.mp4);

应该是

md5_file("\\test\\downloadvideo\\ans-70055298.hd.mp4");

否则,\t被解释为制表符。 因此,md5_file两次都会获得无效的文件名,从而返回相同的哈希值。