ခေတ်သစ်ဝက်ဘ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဒေတာသမာဓိစစ်ဆေးခြင်းသည်အလွန်အရေးကြီးသောလုပ်ငန်းဖြစ်သည်။ ဒေတာထုတ်လွှင့်ခြင်းသို့မဟုတ်သိုလှောင်ခြင်းအတွင်း၌အချက်အလက်များသည်ဒေတာများကိုအနှောင့်အယှက်မဖြစ်စေရန်လိုအပ်သည်။ PHP သည် developer များဤလိုအပ်ချက်ကိုရရှိရန်အတွက် hash-related လုပ်ဆောင်ချက်အမျိုးမျိုးကိုထောက်ပံ့ပေးသည် ။ ဤဆောင်းပါးသည် 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 တန်ဖိုးကိုထုတ်ပေးသည်။
Hash () function သည်တစ်ချိန်တည်းတွင် string တစ်ခု၏ hash တန်ဖိုးကိုတွက်ချက်နိုင်သော်လည်း hash_final () သည်အောက်ပါအခြေအနေများတွင်ပိုမိုသင့်တော်သည်။
ကြီးမားသောဖိုင်များသို့မဟုတ် streaming အချက်အလက်များကိုလုပ်ဆောင်ပါ။
ဖိုင်တစ်ခုလုံးကိုတစ်ချိန်တည်းတွင်မှတ်ဉာဏ်ထဲသို့စာဖတ်ခြင်းသည် hash_init () + hash_update () ကို အသုံးပြုနေစဉ် Memory Splflow ကိုဖြစ်ပေါ်စေနိုင်သည်။
Multi-step processing:
အကယ်. ဒေတာများကို (ကွန်ယက်စီးဆင်းမှုစနစ်များသို့မဟုတ်ဖြန့်ဝေသောစနစ်များမှကွဲပြားသောအချက်အလက်များကဲ့သို့သော) ကိုလက်ခံပါက hash ကိုတဖြည်းဖြည်းအဆင့်မြှင့် တင်. နောက်ဆုံးရလဒ်ကို hash_final () ဖြင့်ထုတ်လုပ်နိုင်သည်။
ပိုပြီးပြောင်းလွယ်ပြင်လွယ်ထိန်းချုပ်မှု:
Hashing algorithm ကို dynamically ကိုရွေးချယ်နိုင်ပြီးအလယ်ပိုင်းရှိစီးပွားရေးလုပ်ငန်းများနှင့်အညီအပြောင်းအလဲနဲ့ယုတ္တိဗေဒကိုချိန်ညှိနိုင်သည်။
ဖိုင်သမာဓိကိုစစ်ဆေးရန် 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 "ဖိုင်သည်အကျင့်ပျက်ခြစားမှုသို့မဟုတ်နှောင့်ယှက်ခဲ့သည်。";
}
?>
ဝေးလံခေါင်သီသောဖိုင်၏သမာဓိကိုစစ်ဆေးရန်လိုအပ်ပါကဝေးလံခေါင်သီ သော စီးဆင်းမှုကိုဖွင့်ရန် 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 "远程ဖိုင်သည်အကျင့်ပျက်ခြစားမှုသို့မဟုတ်နှောင့်ယှက်ခဲ့သည်。";
}
?>