我有两个视频文件有不同的文件名。但是当我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哈希值。
答案 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
两次都会获得无效的文件名,从而返回相同的哈希值。