လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MD5_File () နှင့်ဒေတာဘေ့စ်ကို သုံး. File Signature စားပွဲများကိုစီမံပါ

MD5_File () နှင့်ဒေတာဘေ့စ်ကို သုံး. File Signature စားပွဲများကိုစီမံပါ

M66 2025-06-05

ဖိုင်စီမံခန့်ခွဲမှု, ဗားရှင်းထိန်းချုပ်မှုသို့မဟုတ်ဖိုင်သမာဓိစစ်ဆေးမှုများပါ 0 င်သည့်ဖွံ့ဖြိုးဆဲစနစ်များကိုထိရောက်သောဖိုင်မှတ်တမ်းဇယားတစ်ခုတည်ဆောက်ခြင်းသည်အလွန်အရေးကြီးသည်။ ဖိုင်တစ်ခု၏ MD5 hash တန်ဖိုးကိုတွက်ချက်ရန် PHP သည် built-in function md5_file () ကိုထောက်ပံ့ပေးသည်။ ပြောင်းလွယ်ပြင်လွယ်။ ထိရောက်သောဖိုင်လက်မှတ်ရေးစနစ်ကိုအကောင်အထည်ဖော်ရန်ဒေတာဘေ့စ်ကိုကျွန်ုပ်တို့ပေါင်းစပ်နိုင်သည်။ ဒီဆောင်းပါးကဒီပန်းတိုင်ကိုတစ်ဆင့်ပြီးအောင်လုပ်ဖို့သင့်ကိုခေါ်သွားပါလိမ့်မယ်။

1 ။ MD5_File ကိုဘာကြောင့်ရွေးချယ်ရတာလဲ ()

MD5_File () သည် PHP မှ File Content ၏ MD5 တန်ဖိုးကိုတွက်ချက်ရန် PHP မှပေးသောအဆင်ပြေသောလုပ်ဆောင်ချက်ဖြစ်သည်။ MD5 () နှင့်မတူသည်မှာဖိုင်တစ်ခုလုံးကို ဖိုင် တစ်ခုလုံးနှင့်ဖိုင်တစ်ခုလုံးကိုပထမ ဦး ဆုံးဖတ်ရန်မလိုအပ်ပါ။

ဥပမာအသုံးပြုမှု:

 $hash = md5_file('/path/to/file.zip');
echo $hash;

2 ။ ဒေတာဘေ့စ်ဖွဲ့စည်းပုံဒီဇိုင်း

ဖိုင်လက်မှတ်များကိုစီမံရန်ကျွန်ုပ်တို့သည်ဒေတာဘေ့စ်တွင်အောက်ပါအချက်အလက်များကိုမှတ်တမ်းတင်ရန်လိုအပ်သည်။

  • ဖိုင်လမ်းကြောင်းသို့မဟုတ်ထူးခြားသောအမှတ်အသား

  • ဖိုင်၏ MD5 တန်ဖိုး

  • အချိန်တံဆိပ်ခေါင်းကို Update လုပ်ပါ

ရိုးရှင်းသော MySQL စားပွဲတင်ဖွဲ့စည်းပုံကိုအောက်ပါအတိုင်းဖြစ်နိုင်သည် -

 CREATE TABLE file_hashes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    file_path VARCHAR(255) NOT NULL UNIQUE,
    md5_hash CHAR(32) NOT NULL,
    updated_at DATETIME NOT NULL
);

3 ။ ဖိုင်လက်မှတ်မွမ်းမံမှုနှင့်စိစစ်အတည်ပြုယုတ္တိဗေဒကိုအကောင်အထည်ဖော်ပါ

ဖိုင်လမ်းညွှန်ကိုကျွန်ုပ်တို့ပုံမှန်စကင်ဖတ်စစ်ဆေးနိုင်ပြီး MD5 တန်ဖိုးကိုဒေတာဗေ့စ်တွင်သိမ်းဆည်းထားသောတန်ဖိုးနှင့်နှိုင်းယှဉ်ပြီးဖိုင်ကိုပြောင်းလဲခြင်းရှိမရှိဆုံးဖြတ်ပါ။

 function updateFileHash($filePath, $pdo) {
    if (!file_exists($filePath)) {
        return false;
    }

    $md5 = md5_file($filePath);
    $now = date('Y-m-d H:i:s');

    $stmt = $pdo->prepare("SELECT md5_hash FROM file_hashes WHERE file_path = :file_path");
    $stmt->execute(['file_path' => $filePath]);
    $existing = $stmt->fetch(PDO::FETCH_ASSOC);

    if ($existing) {
        if ($existing['md5_hash'] !== $md5) {
            // ဖိုင်အကြောင်းအရာကိုပြောင်းလဲသွားပြီ,မှတ်တမ်းများကိုအသစ်ပြောင်းခြင်း
            $updateStmt = $pdo->prepare("
                UPDATE file_hashes 
                SET md5_hash = :md5_hash, updated_at = :updated_at 
                WHERE file_path = :file_path
            ");
            $updateStmt->execute([
                'md5_hash' => $md5,
                'updated_at' => $now,
                'file_path' => $filePath
            ]);
        }
    } else {
        // ဖိုင်အသစ်,မှတ်တမ်းတင်
        $insertStmt = $pdo->prepare("
            INSERT INTO file_hashes (file_path, md5_hash, updated_at) 
            VALUES (:file_path, :md5_hash, :updated_at)
        ");
        $insertStmt->execute([
            'file_path' => $filePath,
            'md5_hash' => $md5,
            'updated_at' => $now
        ]);
    }

    return true;
}

4 ။ directory ၏ batch scan နှင့်လက်မှတ်ဇယားကို update လုပ်ပါ

ဖိုင်စနစ်ကို ဖြတ်. directory in files များကို batch လက်မှတ်စီမံခန့်ခွဲမှုများကိုလုပ်ဆောင်နိုင်သည်။

 function scanDirectoryAndUpdate($directory, $pdo) {
    $files = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($directory)
    );

    foreach ($files as $file) {
        if ($file->isFile()) {
            updateFileHash($file->getPathname(), $pdo);
        }
    }
}

V. ပုံမှန်လျှောက်လွှာအခြေအနေများ

ဤယန္တရားကိုကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုနိုင်သည်။

  • ဖိုင်ဗားရှင်းခြေရာခံခြင်းစနစ်

  • CDN သို့မဟုတ် cache ပျက်ကွက်ဆုံးဖြတ်ချက်

  • tamper-provision စောင့်ကြည့်လေ့လာရေးစနစ်

  • ရိုးရှင်းသောဖြန့်ကျက်စနစ်အတွက် Synchronization Detection

ဥပမာအားဖြင့်ဖြန့်ကျက်မှုစနစ်သည်ဖိုင်တစ်ခုမတင်မီ၎င်း၏ MD5 တန်ဖိုးကိုတွက်ချက်ပြီး၎င်းကို server-side database ရှိမှတ်တမ်းများနှင့်နှိုင်းယှဉ်နိုင်သည်။ အကယ်. ၎င်းသည်တသမတ်တည်းဖြစ်လျှင်ဖြန့်ကျက်သောထိရောက်မှုကိုတိုးတက်ကောင်းမွန်အောင်ပြုလုပ်ပေးသောတင်ရန်မလိုအပ်ပါ။

ဖိုင်လက်မှတ်ကိုကြည့်ရှုရန်ဝက်ဘ်ဘောင်ကွက်ကိုပင်သင်တည်ဆောက်နိုင်သည်။