为什么md5为两个不同的文件名返回相同的散列


Why is the md5 returning same hashes for two different file names

我有两个文件名不同的视频文件。但当我md5文件名都返回相同的散列时。以下是文件名。

1.''test''downloadvideo''ans-70055040.hd.mp4

2.''test''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

将返回md551f767588587184d13b8c9e6ed550166sh190d2078270d4ea1cb570b1de7fb890bc761bda9a

echo "md5".$this->_videoo_md51 

将返回md551f767588587184d13b8c9e6ed550166sh190d2078270d4ea1cb570b1de7fb890bc761bda9a

如何获得文件名的两个不同的md5哈希。

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

一个可能的"解决方案"是对文件名和文件本身的哈希结果进行哈希,这将再次成为唯一的哈希。

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

要获得不同的哈希,请更改文件的内容,使文件不完全相同。

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

此外,文件名周围似乎没有引号。他们应该在那里!还有转义反斜杠!

所以

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

应该是

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

否则,'t被解释为选项卡字符。因此,md5_file get两次都是无效的文件名,因此返回相同的散列。