လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> File_Get_contents နှင့်ပေါင်းစပ်အသုံးပြုသောဖိုင်သမာဓိကိုစစ်ဆေးရန်မည်သို့အတည်ပြုရမည်နည်း။

File_Get_contents နှင့်ပေါင်းစပ်အသုံးပြုသောဖိုင်သမာဓိကိုစစ်ဆေးရန်မည်သို့အတည်ပြုရမည်နည်း။

gitbox 2025-05-20

ဖိုင်များကိုကူးယူခြင်း, ကူးယူခြင်း, ကူးယူခြင်းသို့မဟုတ်သိုလှောင်သောအခါဖိုင်ပေါင်းစည်းမှုစစ်ဆေးခြင်းသည်အရေးကြီးသောအပိုင်းဖြစ်သည်။ ဖိုင်၏ hash တန်ဖိုးကိုတွက်ချက်ခြင်းဖြင့်၎င်းကိုမျှော်လင့်ထားသည့်တန်ဖိုးနှင့်နှိုင်းယှဉ်ခြင်းအားဖြင့်ဖိုင်ကိုအနှောင့်အယှက်ဖြစ်စေခြင်း, PHP တွင် hash_final function သည် hash_init နှင့် hash_update ဖြင့်ဖိုင်များကိုလွှင့်ပစ်နိုင်သည် ဤဆောင်းပါးသည်ဤနှစ်ခုကိုသမာဓိစောင့်သိမှုစိစစ်ရေးကိုဖြည့်ဆည်းရန်မည်သို့ပေါင်းစပ်ရမည်ကိုအားဖြင့်သင့်အားယူပါလိမ့်မည်။

Hash_final ကဘာလဲ။

Hash_Final သည် PHP တွင် Hash တွက်ချက်မှုများကိုပြီးစီးပြီးရလဒ်ကိုပြန်ပို့သည်။ များသောအားဖြင့်၎င်းကို hash_init နှင့် hash_update နှင့် တွဲဖက်. အသုံးပြုသည်။

Hash () function ကို (တစ်ကြိမ်တွက်ချက်မှု) နှင့်မတူဘဲ hash_final သည် funfing file content ကိုစာဖတ်ခြင်းကဲ့သို့သောအချက်အလက်များကိုအဆင့်ဆင့်အဆင့်ဆင့်လုပ်ဆောင်ရန်ခွင့်ပြုသည်။ Hash_upline မှရရှိသော Hash Context နှင့်နောက်ဆုံးတွင် Hash_final မှနောက်ဆုံးပေါ် hash တန်ဖိုးကိုအဆင့်မြှင့်ထားသည်။

file_get_contents နှင့် hash လုပ်ဆောင်ချက်များကိုသုံးပါ

အရိုးရှင်းဆုံးဖိုင်သမာဓိစစ်ဆေးမှုကိုတိုက်ရိုက်အသုံးပြုနိုင်သည်။

 $filePath = 'https://gitbox.net/files/sample.txt';
$fileContents = file_get_contents($filePath);
$hash = hash('sha256', $fileContents);
echo "တင်သွင်းခြင်း SHA-256 အဆိုပါ hash တန်ဖိုးဖြစ်ပါတယ်: $hash";

ဤနေရာတွင် Hash function သည်ဖိုင်တစ်ခုလုံး၏ hash တန်ဖိုးကိုတစ်ကြိမ်လျှင်တစ်ချိန်တည်းတွင်ဖိုင်တွဲများနှင့်သင့်တော်သည်။ သို့သော်ကြီးမားသောဖိုင်များအတွက်ဤနည်းလမ်းသည်မှတ်ဥာဏ်များစွာကိုစားသုံးနိုင်သည်။

hashh_init + hash_update + hash_final ကိုသုံးပါ

ကြီးမားသောဖိုင်များအတွက်မူမှတ်ဉာဏ်အသုံးပြုမှုကိုလျှော့ချရန် streaming ကိုအသုံးပြုနိုင်သည်။

 $filePath = 'https://gitbox.net/files/largefile.zip';
$context = hash_init('sha256');
$handle = fopen($filePath, 'rb');

if ($handle) {
    while (!feof($handle)) {
        $buffer = fread($handle, 8192); // တစ်ခုချင်းစီကိုဖတ်ပါ8KB
        hash_update($context, $buffer);
    }
    fclose($handle);
    $finalHash = hash_final($context);
    echo "大တင်သွင်းခြင်း SHA-256 အဆိုပါ hash တန်ဖိုးဖြစ်ပါတယ်: $finalHash";
} else {
    echo "ဖိုင်ကိုဖွင့ ်. မရပါ: $filePath";
}

ဥပမာ -

  • Hash_init ('Sha256') သည် Sha-256 Hash အခြေအနေကိုစတင်သည်။

  • တစ်ချိန်တည်းတွင်ဒေတာတစ်မျိုးတည်းကို ဖတ်ရှု ခြင်း (ဤနေရာတွင် 8KB) ။

  • Hash_Update ဖတ်ရန်ပိတ်ပင်တားဆီးမှုကို Hash အခြေအနေတွင် update လုပ်သည်။

  • Hash_final တွက်ချက်မှုပြီးစီးပြီးနောက်ဆုံးရလဒ်ကိုပြန်ပို့သည်။

ဤနည်းလမ်းသည်မှတ်ဥာဏ်ကိုကယ်တင်ရုံသာမကဝေးလံခေါင်သီသောဖိုင်များကိုပိုမိုကောင်းမွန်စွာကိုင်တွယ်နိုင်သည်။

ဖိုင်သမာဓိကိုစစ်ဆေးပါ

သမာဓိစောင့်သိရန်သော့ချက်သည် နှိုင်းယှဉ်ချက် ဖြစ်သည်။ သငျသညျများသောအားဖြင့်မျှော်လင့်ထားသည့် hash တန်ဖိုးရှိသည် (download စာမျက်နှာမှပေးသောအတည်ပြုကုဒ်အဖြစ်) ရှိသည်။ Code pegager ်ဌာန်းချက်မှာအောက်ပါအတိုင်းဖြစ်သည် -

 $filePath = 'https://gitbox.net/files/largefile.zip';
$expectedHash = 'မျှော်လင့်ထား hash တန်ဖိုး(အသေး)';

$context = hash_init('sha256');
$handle = fopen($filePath, 'rb');

if ($handle) {
    while (!feof($handle)) {
        $buffer = fread($handle, 8192);
        hash_update($context, $buffer);
    }
    fclose($handle);
    $finalHash = hash_final($context);

    if ($finalHash === strtolower($expectedHash)) {
        echo "ဖိုင်သမာဓိအတည်ပြုစိစစ်အတည်ပြု!";
    } else {
        echo "ဖိုင်သမာဓိစစ်ဆေးမှုအတည်ပြုချက်မအောင်မြင်ပါ,hash မတိုက်ဆိုင်。";
    }
} else {
    echo "ဖိုင်ကိုဖွင့ ်. မရပါ: $filePath";
}

သိကောင်းစရာများ:

  • မျှော်လင့်ထားသည့် hash တန်ဖိုး၏အက္ခရာများသည် (များသောအားဖြင့်စာလုံးအသေး) တသမတ်တည်းဖြစ်ကြောင်းသေချာပါစေ။

  • နှိုင်းယှဉ်ခြင်းမပြုမီ, သင်သည် strtolower သို့မဟုတ် strutupper ကို ပေါင်းစည်းပုံစံကိုသုံးနိုင်သည်။