您的位置:

php计算文件md5,php md5

本文目录一览:

如何用php对文件进行MD5校验 - PHP进阶讨论

恩,谢谢楼上。用法如下:将“test.txt”文件中的MD5 hash存储进一个文件中:在下面的案例中,我们将测试“test.txt”文件是否已经改变:??上述代码将输出下面的结果:The file is ok.

超大文件如何计算md5?

首先,至少没必要先把整个文件读到内存里。比如在 php 里,如果有人 md5(file_get_contents(big_file_name)) 就确实非常不妥当。因为 md5 是每 512 bit 作为一个 chunk 进行计算的。所以可以每次读取一部分的内容(最少 512 bit,比较合适是 st_blksize),进行那些 chunk 部分的计算,之后再读取下一部分内容继续计算。简单先说下,md5是有规范的,提供了现成的算法(规范的名字就是md5算法。RFC 1321 The MD5 Message-Digest Algorithm),我们只需要翻译成c、java、python、js等等代码。前端算超大文件可以取头跟尾chunk内容及整个文件的name + update 时间一起算md5值就比较快了,只是为了做唯一标识来做断点续传,从业务逻辑上应该够用了。推荐使用 js spark-md5 开源库,支持直接append各个部分然后算出md5。我做的断点续传功能就是用它在前端算的md5. 各大网盘 TB级别 md5算法应该是这样的,楼上几位都说了文件md5是文件流分块算出来的,那么网盘想获得TB级别文件的md5就必须读取整个文件的文件流才能得到,但是这么做效率十分低下,运算时间是个问题。但是大家忽略了一个问题,文件在上传的过程也是分块上传的,这些上传的碎片其实也是文件流。那么可以把计算md5的时间分摊到每一个碎片上。这样每上传一个片段就计算一点等上传完成了,文件的md5也就算出来了。okTB级别MD5不是问题了。上传完成md5自然就出来了。 不知道我的猜测大家有其他看法没有。刚才提出都传完了就还怎么秒传。秒传最基本的是先要前端算出md5然后传给后端(可能需要更多种哈希值)我研究了很久前端没有办法秒内完成超大文件MD5的,现在用html5 的api 可以算出任意大小文件的 md5 但是耗时相当长。我没有解决办法。也没有想到那些网盘怎么在前端快速获取md5的。

php怎么获取apk的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 "The file is ok.";

}

else

{

echo "The file has been changed.";

}

?

itjob网上有很多相关例子

输出:

The file is ok.

如何使用PHP计算文件的MD5值

function getAllFileMd5($dir){

$hash = '';

$dir = new RecursiveDirectoryIterator($dir);

foreach(new RecursiveIteratorIterator($dir) as $file) {

$hash .= md5_file($file);

}

return md5($hash);

}

?

md5_file — 计算指定文件的 MD5 散列值?

总结后的知识希望能帮到你:

函数名:md5_file

(PHP 4 = 4.2.0, PHP 5, PHP 7, PHP 8)

md5_file — 计算指定文件的 MD5 散列值

说明

md5_file ( string $filename , bool $raw_output = false ) : string

使用 » RSA 数据安全公司的 MD5 报文算法计算 filename 文件的 MD5 散列值并返回。该散列值为 32 字符的十六进制数字。

参数

filename

文件名

raw_output

如果被设置为 true,那么报文摘要将以原始的 16 位二进制格式返回。

返回值

成功返回字符串,否则返回 false。

更新日志

版本 说明

5.1.0 函数改用流 API。这意味着能够配合封装器使用该函数,比如 md5_file('..')。

范例

示例 #1 md5_file() 使用范例