ဖိုင်များကိုကူးယူခြင်း, ကူးယူခြင်း, ကူးယူခြင်းသို့မဟုတ်သိုလှောင်သောအခါဖိုင်ပေါင်းစည်းမှုစစ်ဆေးခြင်းသည်အရေးကြီးသောအပိုင်းဖြစ်သည်။ ဖိုင်၏ hash တန်ဖိုးကိုတွက်ချက်ခြင်းဖြင့်၎င်းကိုမျှော်လင့်ထားသည့်တန်ဖိုးနှင့်နှိုင်းယှဉ်ခြင်းအားဖြင့်ဖိုင်ကိုအနှောင့်အယှက်ဖြစ်စေခြင်း, PHP တွင် hash_final function သည် hash_init နှင့် hash_update ဖြင့်ဖိုင်များကိုလွှင့်ပစ်နိုင်သည် ။ ဤဆောင်းပါးသည်ဤနှစ်ခုကိုသမာဓိစောင့်သိမှုစိစစ်ရေးကိုဖြည့်ဆည်းရန်မည်သို့ပေါင်းစပ်ရမည်ကိုအားဖြင့်သင့်အားယူပါလိမ့်မည်။
Hash_Final သည် PHP တွင် Hash တွက်ချက်မှုများကိုပြီးစီးပြီးရလဒ်ကိုပြန်ပို့သည်။ များသောအားဖြင့်၎င်းကို hash_init နှင့် hash_update နှင့် တွဲဖက်. အသုံးပြုသည်။
Hash () function ကို (တစ်ကြိမ်တွက်ချက်မှု) နှင့်မတူဘဲ hash_final သည် funfing file content ကိုစာဖတ်ခြင်းကဲ့သို့သောအချက်အလက်များကိုအဆင့်ဆင့်အဆင့်ဆင့်လုပ်ဆောင်ရန်ခွင့်ပြုသည်။ Hash_upline မှရရှိသော Hash Context နှင့်နောက်ဆုံးတွင် Hash_final မှနောက်ဆုံးပေါ် 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 တန်ဖိုးကိုတစ်ကြိမ်လျှင်တစ်ချိန်တည်းတွင်ဖိုင်တွဲများနှင့်သင့်တော်သည်။ သို့သော်ကြီးမားသောဖိုင်များအတွက်ဤနည်းလမ်းသည်မှတ်ဥာဏ်များစွာကိုစားသုံးနိုင်သည်။
ကြီးမားသောဖိုင်များအတွက်မူမှတ်ဉာဏ်အသုံးပြုမှုကိုလျှော့ချရန် 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 ကို ပေါင်းစည်းပုံစံကိုသုံးနိုင်သည်။