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() 使用範例

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/200552.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-05 20:01
下一篇 2024-12-05 20:01

相關推薦

發表回復

登錄後才能評論