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

PHP တွင်ဒေတာသမာဓိစစ်ဆေးမှုများရရှိရန် hash_final ကိုမည်သို့အသုံးပြုရမည်နည်း။

gitbox 2025-05-29

ခေတ်သစ်ဝက်ဘ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဒေတာသမာဓိစစ်ဆေးခြင်းသည်အလွန်အရေးကြီးသောလုပ်ငန်းဖြစ်သည်။ ဒေတာထုတ်လွှင့်ခြင်းသို့မဟုတ်သိုလှောင်ခြင်းအတွင်း၌အချက်အလက်များသည်ဒေတာများကိုအနှောင့်အယှက်မဖြစ်စေရန်လိုအပ်သည်။ PHP သည် developer များဤလိုအပ်ချက်ကိုရရှိရန်အတွက် hash-related လုပ်ဆောင်ချက်အမျိုးမျိုးကိုထောက်ပံ့ပေးသည် ဤဆောင်းပါးသည် Hash_final () () ၏ရည်ရွယ်ချက်ကိုလေ့လာရန်, လုပ်ဆောင်ခြင်း၏လုပ်ဆောင်မှုကိုအသေးစိတ်လေ့လာသုံးသပ်လိမ့်မည်။

1 ။ hash_final ကဘာလဲ?

Hash_final () သည် PHP မှပေးသော hash extension တွင် incremental hash စစ်ဆင်ရေးတစ်ခုတွင်နောက်ဆုံး hash တန်ဖိုးကိုရရှိရန်စီစဉ်ထားသည်။ ၎င်းကို hash_init () နှင့် hash_update () နှင့်အသုံးပြုလေ့ရှိပြီး hash တန်ဖိုးများကို segments များတွင်တွက်ချက်ရန်လိုအပ်သည့်ကြီးမားသောဖိုင်များသို့မဟုတ်အခြေအနေများကိုကိုင်တွယ်ရန်သင့်တော်သည်။

အခြေခံအသုံးပြုမှု:

 string hash_final ( HashContext $context [, bool $raw_output = false ] )
  • $ Context : hash_init () ကဖန်တီး hash အခြေအနေ။

  • $ Raw_output (optional ကို) - အကယ်. မှန်ကန်သော လျှင် hexadecimal format ဖြင့် hash တန်ဖိုးကိုထုတ်ပေးသည်။

2 ။ Hash () အစား hash_final ကိုဘာလို့သုံးရတာလဲ။

Hash () function သည်တစ်ချိန်တည်းတွင် string တစ်ခု၏ hash တန်ဖိုးကိုတွက်ချက်နိုင်သော်လည်း hash_final () သည်အောက်ပါအခြေအနေများတွင်ပိုမိုသင့်တော်သည်။

  1. ကြီးမားသောဖိုင်များသို့မဟုတ် streaming အချက်အလက်များကိုလုပ်ဆောင်ပါ။
    ဖိုင်တစ်ခုလုံးကိုတစ်ချိန်တည်းတွင်မှတ်ဉာဏ်ထဲသို့စာဖတ်ခြင်းသည် hash_init () + hash_update () ကို အသုံးပြုနေစဉ် Memory Splflow ကိုဖြစ်ပေါ်စေနိုင်သည်။

  2. Multi-step processing:
    အကယ်. ဒေတာများကို (ကွန်ယက်စီးဆင်းမှုစနစ်များသို့မဟုတ်ဖြန့်ဝေသောစနစ်များမှကွဲပြားသောအချက်အလက်များကဲ့သို့သော) ကိုလက်ခံပါက hash ကိုတဖြည်းဖြည်းအဆင့်မြှင့် တင်. နောက်ဆုံးရလဒ်ကို hash_final () ဖြင့်ထုတ်လုပ်နိုင်သည်။

  3. ပိုပြီးပြောင်းလွယ်ပြင်လွယ်ထိန်းချုပ်မှု:
    Hashing algorithm ကို dynamically ကိုရွေးချယ်နိုင်ပြီးအလယ်ပိုင်းရှိစီးပွားရေးလုပ်ငန်းများနှင့်အညီအပြောင်းအလဲနဲ့ယုတ္တိဗေဒကိုချိန်ညှိနိုင်သည်။

3 ။ လက်တွေ့လျှောက်လွှာ - ဖိုင်သမာဓိကိုစစ်ဆေးပါ

ဖိုင်သမာဓိကိုစစ်ဆေးရန် hash_final () ကို အသုံးပြုခြင်း၏ဥပမာတစ်ခုမှာဤတွင်ဖြစ်သည်။

 <?php
$file = 'largefile.zip';
$expectedHash = 'e99a18c428cb38d5f260853678922e03'; // မျှော်လင့်ထားMD5hash တန်ဖိုး

$context = hash_init('md5');
$handle = fopen($file, 'rb');

if (!$handle) {
    die("ဖိုင်ကိုဖွင့ ်. မရပါ: $file");
}

while (!feof($handle)) {
    $data = fread($handle, 8192); // တစ်ခုချင်းစီကိုဖတ်ပါ8KB
    hash_update($context, $data);
}

fclose($handle);

$calculatedHash = hash_final($context);

if ($calculatedHash === $expectedHash) {
    echo "ဖိုင်သမာဓိအတည်ပြုစိစစ်အတည်ပြု。";
} else {
    echo "ဖိုင်သည်အကျင့်ပျက်ခြစားမှုသို့မဟုတ်နှောင့်ယှက်ခဲ့သည်。";
}
?>

4 ။ စိစစ်အတည်ပြုဘို့ URL ဒေတာကိုသုံးပါ

ဝေးလံခေါင်သီသောဖိုင်၏သမာဓိကိုစစ်ဆေးရန်လိုအပ်ပါကဝေးလံခေါင်သီ သော စီးဆင်းမှုကိုဖွင့်ရန် fopen () ကိုသုံးနိုင်သည်။

 <?php
$url = 'https://gitbox.net/files/sample.zip';
$expectedSha256 = '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08';

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

if (!$handle) {
    die("ဖွင့်လို့မရဘူးURL: $url");
}

while (!feof($handle)) {
    $data = fread($handle, 8192);
    hash_update($context, $data);
}

fclose($handle);

$calculatedSha256 = hash_final($context);

if ($calculatedSha256 === $expectedSha256) {
    echo "远程ဖိုင်သမာဓိအတည်ပြုစိစစ်အတည်ပြု。";
} else {
    echo "远程ဖိုင်သည်အကျင့်ပျက်ခြစားမှုသို့မဟုတ်နှောင့်ယှက်ခဲ့သည်。";
}
?>