博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】在 Web 应用中,随着用户上传图片,如商品图片、个人头像,可能会出现重复上传,而我们在上传之前进行判重处理,就可以节省空间。也可以将文件下所有多余相同图片进行删除。(其实这也是我 2017 年参加搜狐校招的一道面试题,没答上来,最后凉凉)
代码很简单,如下:
$file1 = "1.jpg";
$file2 = "2.jpg";
$a = sha1_file($file1);
$b = sha1_file($file2);
if($a == $b)
{
echo "yes";
}else
{
echo 'no';
}
当然,不仅仅是图片可以进行判断,也是一个其它文件,如 .txt , .html , .rar 等等都可以。这里主要讲解一下原理:
sha1_file():用于计算指定的文件的 sha1 散列值。该散列值是一个 40 字符长度的十六进制数字,成功返回一个字符串,否则返回 FALSE。
SHA1 是一种数据加密算法,该算法是目前公认的最安全的散列算法之一。用于接收一段明文,以一种不可逆的方式将它转换成一段密文。
由于每个文件的 SHA1 散列值都是唯一的,而不同图片的编码顺序都是不同的,得出的图片散列值也是不同的,所以可以采用此方法进行判断两张图片是否相同。
这里再讲解一个应用场景,有助于理解本文的原理,当我们在网络中下载文件时(,我们要怎么确保下载的文件准确无误呢(文件没有被病毒感染或者恶意篡改等等情况),这里通常网站就会提供该文件的校验值,如 MD5、SHA1 (统称为摘要算法)等等值,所以我们可以手动计算出该文件的校验值,若与网站上提供的一样,我们就可以放心的使用了。
版权归 马富天个人博客 所有
本文标题:《使用 sha1_file() 判断两个图片(或者文件)是否完全相同》
本文链接地址:http://www.mafutian.com/406.html
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^
顶0
踩0
评论审核未开启 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
||