1. 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('http://example.com/..')。
範例
示例 #1 md5_file() 使用範例
2. php版本的ueditor如何將上傳的文件以文件自身的md5值命名
1 if(isset($_FILES['multimedia']) && $_FILES['multimedia']['error']==0)
2 {
3 $file_name = $_FILES['multimedia']['name'];
4 $size = getimagesize($_FILES['multimedia']['tmp_name']);
5 $type = $_FILES['multimedia']['type'];
6 $original = $_FILES['multimedia']['tmp_name'];
7 $md5 = md5_file($original);
8 echo $md5;
9 }
md5_file()
md5_file() 函數計算文件的 MD5 散列。md5() 函數使用 RSA 數據安全,包括 MD5 報文摘譯演算法。如果成功,則返回所計算的 MD5 散列,如果失敗,則返回 false。
語法:md5(string,raw)
參數string,必需。規定要計算的文件。
參數charlist,可選。規定十六進制或二進制輸出格式:TRUE - 原始 16 字元二進制格式;FALSE - 默認。32 字元十六進制數。
1 <?php
2 $filename = "test.txt";
3 $md5file = md5_file($filename);
4 echo $md5file;
5 ?>
存儲 "test.txt" 文件的 MD5 散列:
1 <?php
2 $md5file = md5_file("test.txt");
3 file_put_contents("md5file.txt",$md5file);
4 ?>
在本例中,我們將檢測 "test.txt" 是否已被更改(即是否 MD5 散列已被更改):
01 <?php
02 $md5file = file_get_contents("md5file.txt");
03 if (md5_file("test.txt") == $md5file)
04 {
05 echo "The file is ok.";
06 }
07 else
08 {
09 echo "The file has been changed.";
10 }
11 ?>
輸出:
view sourceprint?
1 The file is ok.
3. 如何使用PHP計算文件的MD5值
function getAllFileMd5($dir){
$hash = '';
$dir = new RecursiveDirectoryIterator($dir);
foreach(new RecursiveIteratorIterator($dir) as $file) {
$hash .= md5_file($file);
}
return md5($hash);
}
?>
4. php中關於md5函數參數的問題
string md5 ( string str [, bool raw_output])
Calculates the MD5 hash of str using the RSA Data Security, Inc. MD5 Message-Digest Algorithm, and returns that hash. The hash is a 32-character hexadecimal number. If the optional raw_output is set to TRUE, then the md5 digest is instead returned in raw binary format with a length of 16.
簡單翻譯一下:
用RSA Data Security, Inc. MD5 Message-Digest演算法計算一個字元串 str 的MD5哈希值並返回. 這個哈希值是一個32個字元的16進制數.
如果可選參數raw_output設置為 true ,則md5函數將改為返回一個未加工的,長度為16的二進制格式的摘要.
5. 如何用php對文件進行MD5校驗 - PHP進階討論
恩,對以前的版本不支持md5_file. (PHP 4 >= 4.2.0, PHP 5)
6. php md5有什麼用,不是一樣破解得了嗎
PHP 自帶的加密函數 md5()、crypt()
md5() 用來計算 MD5 哈稀。語法為:string md5(string str);
crypt() 將字元串用 UNIX 的標准加密 DES 模塊加密。這是單向的加密函數,無法解密。欲比對字元串,將已加密的字元串的頭二個字元放在
salt 的參數中,再比對加密後的字元串。語法為:string crypt(string str, string [salt]);
網上的解密網站,只能破解一些較簡單的,如果感覺MD5加密函數不行,可以嘗試用crypt()
7. 超大文件如何計算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的。
8. php 判斷兩個文件是不是一樣
<?php
$filename = "test.txt";
$filename1 = "test1.txt";
$md5file = md5_file($filename);
$md5file1 = md5_file($filename1);
echo $md5file.PHP_EOL;
echo $md5file1.PHP_EOL;
if ($md5file === $md5file1){
echo "文件一致".PHP_EOL;
}else{
echo "文件不一致".PHP_EOL;
}
通過md5_file函數計算文件MD5的值進行比較,得出這兩個文件是否一致
9. 如何遍歷一個文件夾下的所有文件,並用md5函數算出所有文件的md5值(用php實現)
function file_read_all ($dir)
{
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
$n=0;
while (($file = readdir($dh)) !== false) {
if ( $file == '.' or $file =='..' or $file=='.svn')
{
continue;
}
echo md5_file($dir.$file);//計算每個文件md5值 echo '<br />';
if (is_dir ($dir.$file))
{
file_read_all ($dir.$file.'/');
}
}
}
closedir($dh);
}
}
10. php 獲得上傳文件的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.";}?>
輸出:
The file is ok.