我有两个文件名不同的视频文件。但当我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两次都是无效的文件名,因此返回相同的散列。