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

Hash_equals နှင့်ပေါင်းစပ်ထားသောဖိုင် hash တန်ဖိုးကိုမည်သို့အတည်ပြုရမည်နည်း။

M66 2025-05-27

လျှောက်လွှာများစွာတွင်ဖိုင်၏သမာဓိကိုစစ်ဆေးရန်အလွန်အရေးကြီးသည်။ အထူးသဖြင့်သင်ဖိုင်တစ်ခုကိုဒေါင်းလုတ်လုပ်ရန် (သို့) တင်ရန်လိုအပ်သည့်အခါဖိုင်ကိုအနှောင့်အယှက်မဖြစ်စေရန်သေချာစေရန်အလွန်အရေးကြီးသည်။ PHP သည် hash_update_stream နှင့် hash_equals () တွင်အသုံးများသောလုပ်ဆောင်ချက်နှစ်ခုဖြစ်သော Hash Checks စစ်ဆေးမှုများပြုလုပ်ရန်နည်းလမ်းအမျိုးမျိုးကိုထောက်ပံ့ပေးသည်။

ဖိုင်ကိုတဖြည်းဖြည်းဖတ်ရန်နှင့် hash တန်ဖိုးကိုတွက်ချက်ရန် hash_update_stream function ကိုမည်သို့အသုံးပြုရမည်ကိုဤဆောင်းပါးသည်ဖိုင်၏သမာဓိကိုစစ်ဆေးရန်မျှော်လင့်ထားသည့် hash တန်ဖိုးကိုနှိုင်းယှဉ်ရန် hash_equals () function ကိုသုံးပါလိမ့်မည်။

Hash_update_stream နှင့် hash_equals () ဘာတွေလဲ။

  • Hash_update_stream : ဒီ function ကို data stream ၏ hash တန်ဖိုးကိုတွက်ချက်ရန်အသုံးပြုသည်။ ကြီးမားသောဖိုင်များကိုပြုပြင်သည့်အခါမှတ်ဥာဏ်လျှံပြ problem နာကိုအတုံးအတွင်းရှိဖိုင်များဖတ်ရှုခြင်းနှင့် Hash တန်ဖိုးကိုတဖြည်းဖြည်းချင်းအသစ်ပြောင်းခြင်းအားဖြင့်မှတ်ဥာဏ်လျှံခြင်းပြ problem နာကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။

  • Hash_equals : ဒီဟာဟာ hash တန်ဖိုးနှစ်ခုကိုနှိုင်းယှဉ်ဖို့လုံခြုံတဲ့ function တစ်ခုပါ။ ၎င်းသည်အချိန်ကာလကိုတိုက်ခိုက်မှုများကိုကာကွယ်ပေးပြီး == သို့မဟုတ် = == ကိုအသုံးပြုခြင်းထက်ပိုမိုလုံခြုံသည်။ အဘယ်ကြောင့်ဆိုသော် Hash တန်ဖိုးများကြောင့်အချိန်ကွာခြားမှုကြောင့်အချိန်ကွာခြားချက်ကိုမဖော်ပြပါ။

hash_update_stream နှင့် hash_equals () ကို အသုံးပြု. ဖိုင် hash တန်ဖိုးကိုမည်သို့အတည်ပြုရမည်နည်း။

သင့်တွင်ဖိုင်တစ်ခုရှိပြီးမျှော်လင့်ထားသည့် hash vere တစ်ခုရှိသည်ဟုယူဆသည်, သင်ဖိုင်၏သမာဓိကိုအောက်တွင်ဖော်ပြထားသောအဆင့်များကိုလိုက်နာလိုသည်။

အဆင့် 1: ဖိုင်ကိုဖွင့်ပါ

ပထမ ဦး စွာကျွန်ုပ်တို့သည်အတည်ပြုရန်ဖိုင်ကိုဖွင့်ရန်လိုအပ်သည်။ စာဖတ်ခြင်းအတွက်ဖိုင်ကိုဖွင့်ရန် fopen () ကိုသုံးနိုင်သည်။

 $file = fopen('path/to/your/file', 'rb');

အဆင့် 2: hash အခြေအနေကိုစတင်ပါ

ထို့နောက် hash အခြေအနေကိုစတင်ရန် Hash_init () ကို သုံးပါ။ Sha256 ကို ဒီမှာဥပမာတစ်ခုအဖြစ်ယူပါ။ ဟုတ်ပါတယ်, အခြား MD5 , Sha512 စသဖြင့်အခြား hashing algorithms များကိုလည်းအသုံးပြုနိုင်သည်။

 $hashContext = hash_init('sha256');

အဆင့် 3: ဖိုင်အဆင့်ကိုအဆင့်ဆင့်ဖြင့်ဖတ်ပြီး Hash Value ကို update လုပ်ပါ

ဖိုင်ကိုအတုံးများဖြင့်ဖတ်ပြီး block တစ်ခုစီ၏အချက်အလက်များကို hash_update_stream () function မှတဆင့် hash context သို့ data ကို update လုပ်ပါ။

 while (!feof($file)) {
    $data = fread($file, 8192); // ဖတ်8KBဒေတာလုပ်ကွက်
    hash_update_stream($hashContext, $data);
}

အဆင့် 4: ဖိုင်၏နောက်ဆုံး hash တန်ဖိုးကိုတွက်ချက်ပါ

ဖိုင်ကိုဖတ်ပြီးနောက် calculated file hash value ကိုရယူရန် hash_final () ကို သုံးပါ။

 $fileHash = hash_final($hashContext);

အဆင့် 5: ဖိုင် hash ကိုမျှော်လင့်ထားသည့် hash နှင့်နှိုင်းယှဉ်ပါ

နောက်ဆုံးတွင်ကျွန်ုပ်တို့သည် hash_equals () တွက်ချက်ထားသောဖိုင် hash တန်ဖိုးကိုမျှော်လင့်ထားသည့် Hash တန်ဖိုးကိုလုံခြုံစွာနှိုင်းယှဉ်ရန်မျှော်လင့်ထားသည့် Hash Value ကိုလုံခြုံစွာနှိုင်းယှဉ်ရန်အသုံးပြုသည်။

 $expectedHash = 'မျှော်လင့်ထား hash တန်ဖိုး'; // သင်သည်ဤ hash တန်ဖိုးကိုဆာဗာသို့မဟုတ်အခြားလုံခြုံသောနေရာမှရနိုင်သည်

if (hash_equals($fileHash, $expectedHash)) {
    echo "ဖိုင်ပြည့်စုံ,hash တန်ဖိုးကိုက်ညီမှု!";
} else {
    echo "ဖိုင်များအကျင့်ပျက်ခြစားမှုသို့မဟုတ်နှောင့်အယှက်နေကြသည်,Hash တန်ဖိုးများနှင့်မကိုက်ညီပါ!";
}

နမူနာကုဒ်

ဤတွင်အပြည့်အဝနမူနာကုဒ်ဖြစ်ပါတယ်:

 <?php

// ဖိုင်ကိုဖွင့်ပါ
$file = fopen('path/to/your/file', 'rb');
if (!$file) {
    die('无法ဖိုင်ကိုဖွင့်ပါ');
}

// Hash အခြေအနေကိုစတင်ပါ
$hashContext = hash_init('sha256');

// 逐步ဖတ်文件并更新哈希值
while (!feof($file)) {
    $data = fread($file, 8192);
    hash_update_stream($hashContext, $data);
}

// ဖိုင်၏ hash တန်ဖိုးကိုရယူပါ
$fileHash = hash_final($hashContext);

// မျှော်လင့်ထား hash တန်ဖိုး
$expectedHash = 'မျှော်လင့်ထား hash တန်ဖိုး'; // ဥပမာအားဖြင့်,'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'

// Hash တန်ဖိုးများကိုနှိုင်းယှဉ်
if (hash_equals($fileHash, $expectedHash)) {
    echo "ဖိုင်ပြည့်စုံ,hash တန်ဖိုးကိုက်ညီမှု!";
} else {
    echo "ဖိုင်များအကျင့်ပျက်ခြစားမှုသို့မဟုတ်နှောင့်အယှက်နေကြသည်,Hash တန်ဖိုးများနှင့်မကိုက်ညီပါ!";
}

// ဖိုင်ကိုပိတ်ပါ
fclose($file);

?>