導航:首頁 > 編程語言 > php計算文件的md5

php計算文件的md5

發布時間:2022-07-02 05:46:25

『壹』 php MD5的定義用法

The md5() function calculates the MD5 hash of a string.
md5()函數的作用是:計算字元串的MD5 hash。
The md5() function uses the RSA Data Security, Inc. MD5 Message-Digest Algorithm.
md5()函數使用美國實驗室(以研究加密演算法而著名)數據安全加密。它採用MD5信息散列[Message-Digest]運演算法則
From RFC 1321 - The MD5 Message-Digest Algorithm: The MD5 message-digest algorithm takes as input a message of arbitrary length and proces as output a 128-bit fingerprint or message digest of the input. The MD5 algorithm is intended for digital signature applications, where a large file must be compressed in a secure manner before being encrypted with a private (secret) key under a public-key cryptosystem such as RSA.
RFC1321的解釋 - MD5信息散列[Message-Digest]運演算法則:「MD5信息散列運演算法則將任意長度的信息作為輸入值,並將其換算成一個128位長度的「指紋信息」或「信息散列」值來代表這個輸入值,並以換算後的值作為結果。MD5運演算法則主要是為「數字簽名程序」而設計的;在這個「數字簽名程序「中,較大的文件將在加密(這里的加密過程是通過在一個密碼系統下[如:RSA]的公開密匙下設置私要密匙而完成的)之前以一種安全的方式進行壓縮。」
This function returns the calculated MD5 hash on success, or FALSE on failure.
如果函數執行成功將計算MD5 hash,如果失敗返回false。

『貳』 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.

『叄』 如何使用PHP計算文件的MD5值

function getAllFileMd5($dir){
$hash = '';
$dir = new RecursiveDirectoryIterator($dir);
foreach(new RecursiveIteratorIterator($dir) as $file) {
$hash .= md5_file($file);
}
return md5($hash);
}
?>

『肆』 超大文件如何計算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、javapython、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對文件進行MD5校驗 - PHP進階討論

恩,對以前的版本不支持md5_file. (PHP 4 >= 4.2.0, PHP 5)

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

『柒』 php md5有什麼用,不是一樣破解得了嗎

PHP 自帶的加密函數 md5()、crypt()
md5() 用來計算 MD5 哈稀。語法為:string md5(string str);
crypt() 將字元串用 UNIX 的標准加密 DES 模塊加密。這是單向的加密函數,無法解密。欲比對字元串,將已加密的字元串的頭二個字元放在
salt 的參數中,再比對加密後的字元串。語法為:string crypt(string str, string [salt]);
網上的解密網站,只能破解一些較簡單的,如果感覺MD5加密函數不行,可以嘗試用crypt()

『捌』 如何遍歷一個文件夾下的所有文件,並用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);
}
}

『玖』 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的二進制格式的摘要.

『拾』 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.

閱讀全文

與php計算文件的md5相關的資料

熱點內容
注冊伺服器地址指什麼 瀏覽:431
文本命令行 瀏覽:95
撲克牌睡眠解壓 瀏覽:190
rc4演算法流程圖 瀏覽:157
胡蘿卜解壓方法 瀏覽:35
掃描pdf格式軟體 瀏覽:876
程序員在銀行開賬戶 瀏覽:516
android資料庫下載 瀏覽:749
中午伺服器崩潰怎麼辦 瀏覽:425
產品經理和程序員待遇 瀏覽:442
解憂程序員免費閱讀 瀏覽:109
錄像免壓縮 瀏覽:508
總結所學過的簡便演算法 瀏覽:362
南昌哪些地方需要程序員 瀏覽:761
三台伺服器配置IP地址 瀏覽:175
如何用命令方塊連續對話 瀏覽:280
win7linux共享文件夾 瀏覽:304
命令符打開本地服務 瀏覽:601
android應用程序源碼 瀏覽:705
安卓開發工程師簡歷怎麼寫 瀏覽:63