云服务器 精选特惠
新用户低至0.5折起 爆款免费试用3个月

前言

早些年接触国外知名破解团队DGT(Grinderz.org 现已解散)发布资源的时候,会有一个验证器,其目的是为了验证发布的包是否出自于DGT之手,避免别人二次分包,向内部放置其他代码,有效的保证了代码的安全性和完整性,保护了用户主机的安全也保证了自己的信誉,反编译了他们的验证器代码研究了一下,找了相关的资料去实现这个事情。

这篇文章主要介绍了PHP获取文件的MD5值并判断是否被修改的例子,Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护,需要的朋友可以参考下
由于需要判断上传的文件是否被修改过,需要记录上传文件的md5值,这里记录一下获取文件md5值的方法。

代码如下:

if(isset($_FILES['multimedia']) && $_FILES['multimedia']['error']==0)

{

 $file_name = $_FILES['multimedia']['name'];

 $size = getimagesize($_FILES['multimedia']['tmp_name']);

    $type = $_FILES['multimedia']['type'];

 $original = $_FILES['multimedia']['tmp_name'];

 $md5 = md5_file($original);

 echo $md5;

}

md5_file()

md5_file() 函数计算文件的 MD5 散列。md5() 函数使用 RSA 数据安全,包括 MD5 报文摘译算法。如果成功,则返回所计算的 MD5 散列,如果失败,则返回 false。

语法:md5(string,raw)

参数string,必需。规定要计算的文件。

参数charlist,可选。规定十六进制或二进制输出格式:TRUE – 原始 16 字符二进制格式;FALSE – 默认。32 字符十六进制数。

代码如下:

<?php

$filename = "test.txt";

$md5file = md5_file($filename);

echo $md5file;

?>

存储 “test.txt” 文件的 MD5 散列:

代码如下:

<?php

$md5file = md5_file("test.txt");

file_put_contents("md5file.txt",$md5file);

?>

在本例中,我们将检测 “test.txt” 是否已被更改(即是否 MD5 散列已被更改):

代码如下:

<?php

$md5file = file_get_contents("md5file.txt");

if (md5_file("test.txt") == $md5file)

{

 echo "文件未被修改";

}

else

{

 echo "文件已被修改";

}

?>

输出

代码如下:

文件未被修改

以上就是PHP获取文件的MD5值并判断是否被修改的例子的详细内容

尾声

其实这个例子可以延申一下,因为我们要验证的可能不止一个文件,如果单个的去取MD5会有些麻烦,这时就可以用到批量将指定目录和文件生成MD5值并保存到某文件,然后去从这个文件中读取值去比对,这样效率就高了。下一篇教程将说明一下批量生成的方法。

新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。

发表回复

您的电子邮箱地址不会被公开。