လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> hash_update နှင့်အတူ PHP hash_final ကိုအသုံးပြုတဲ့အခါမှတ်စုများ

hash_update နှင့်အတူ PHP hash_final ကိုအသုံးပြုတဲ့အခါမှတ်စုများ

gitbox 2025-05-20

PHP တွင် hash operations များကိုလုပ်ဆောင်သည့်အခါ hash_init () , hash_update () နှင့် hash_final () နှင့် hash_final () နှင့် hash_final () နှင့် hash_final () နှင့် hash_final () နှင့် hash_final ()) ၎င်းတို့သည်ကြီးမားသောဖိုင်များ (သို့) chunked data များကိုပြုပြင်ရန်အတွက်သင့်လျော်သော Hash တန်ဖိုးများကိုတွက်ချက်ရန် streaming (segmented) streaming (segmented) နည်းလမ်းကိုပေးသည်

ဤဆောင်းပါးသည် hash_update () နှင့် hash_final () ကိုမည်သို့မှန်ကန်စွာအသုံးပြုရမည်ကိုအသေးစိတ်ရှင်းပြပြီးဂရုပြုမည့်အရာများကိုအာရုံစိုက်ပါလိမ့်မည်။

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

ဤလုပ်ဆောင်ချက်သုံးခု၏အခြေခံဖြစ်စဉ်မှာအောက်ပါအတိုင်းဖြစ်သည် -

  1. hash အခြေအနေကိုစတင်ရန်:

     $context = hash_init('sha256');
    
  2. အဆင့်မြှင့်ထားသောအချက်အလက်များကိုအကြိမ်ကြိမ်

     hash_update($context, 'ဒေတာ၏အစိတ်အပိုင်းတစ်ခု1');
    hash_update($context, 'ဒေတာ၏အစိတ်အပိုင်းတစ်ခု2');
    
  3. နောက်ဆုံး hash တန်ဖိုးကိုရယူပါ။

     $hash = hash_final($context);
    

ပြီးပြည့်စုံသောဥပမာ -

 <?php
$context = hash_init('sha256');

hash_update($context, 'Hello ');
hash_update($context, 'World!');

$finalHash = hash_final($context);

echo "နောက်ဆုံး hash တန်ဖိုး: " . $finalHash;
?>

မှတ်သားရန်အရာ

1 ?? hash_final () ကိုခေါ်ပြီးနောက်အခြေအနေကိုနောက်တဖန်မသုံးနိုင်ပါ

သင်ခေါ်ဆိုသောအခါ

 $hash = hash_final($context);

အဆိုပါအခြေအနေတွင် $ account ဖျက်ဆီးခံရ ပြီး hash_update () သို့မဟုတ် hash_final () ကို ဆက်ခေါ်ရန်၎င်းကိုသင်မသုံးနိုင်တော့ပါ။

အခြား hashes များကိုတူညီသော data stream ပေါ်တွင် ဆက်. ရေတွက်လိုပါက hash_init () ကို ထပ်မံခေါ်ရန်လိုအပ်သည်။

2 ?? hash_copy () ကို ဌာနခွဲတစ်ခုအဖြစ်အသုံးပြုပါ

အကယ်. သင်သည်ဌာနခွဲရလဒ်မျိုးစုံကိုတူညီသောအခြေအနေတွင် အခြေခံ. ရရန်လိုအပ်ပါက hash_copy () ကို သုံးနိုင်သည်။

 $context = hash_init('sha256');
hash_update($context, 'ဒေတာ၏အစိတ်အပိုင်းတစ်ခု');

$copy = hash_copy($context);

hash_update($context, 'နောက်ဖြစ်သောA');
$hashA = hash_final($context);

hash_update($copy, 'နောက်ဖြစ်သောB');
$hashB = hash_final($copy);

ဤနည်းအားဖြင့် ဒေါ်လာ Hashha နှင့် Hashb သည် မတူညီသောအကိုင်းအခက်များ၏ရလဒ်များဖြစ်သည်။

3 ?? ကြီးမားသောဖိုင်များပြုပြင်သည့်အခါပိတ်ပင်တားဆီးမှုဖြင့် update ကို

ကြီးမားသောဖိုင်များအတွက်, သင်သည် hash_update () ကို အပိုင်းအစများတွင်ဖတ်ရှုနိုင်သည်။

 <?php
$context = hash_init('sha256');

$handle = fopen('largefile.bin', 'rb');
while (!feof($handle)) {
    $chunk = fread($handle, 8192);
    hash_update($context, $chunk);
}
fclose($handle);

$finalHash = hash_final($context);
echo "ကြီးမားသော File Hash Value: " . $finalHash;
?>

၎င်းသည်ဖိုင်များကိုတစ်ကြိမ်ဖတ်ရှုခြင်းကြောင့်ဖြစ်ပေါ်သောမှတ်ဉာဏ်ဖိအားကိုရှောင်ရှားသည်။

4 ?? URL အခြေအနေများတွင်အသုံးပြုပါ

အကယ်. သင်သည် http တောင်းဆိုမှုမှတဆင့်အချက်အလက်များကို streaming လုပ်နေလျှင်ဥပမာ -

 <?php
$url = 'https://gitbox.net/sample-file.bin';
$context = hash_init('sha256');

$handle = fopen($url, 'rb');
if ($handle) {
    while (!feof($handle)) {
        $chunk = fread($handle, 8192);
        hash_update($context, $chunk);
    }
    fclose($handle);

    $finalHash = hash_final($context);
    echo "Remote ဖိုင် hash တန်ဖိုး: " . $finalHash;
} else {
    echo "ဖွင့်လို့မရဘူး URL。";
}
?>

ဂရုတစိုက် - PHPP.ini တွင် ခွင့်ပြုရန် ခွင့် ပြု ပါ,

5 ?? ညာဘက် algorithm ကိုရွေးချယ်ပါ

Hash_init ၏ပထမဆုံး parameter သည် algorithm အမည်ဖြစ်သည်။ MD5 သို့မဟုတ် Sha1 အစား Sha256 နှင့် Sha512 ကဲ့သို့သောခေတ်သစ် algorithms ကဲ့သို့သောခေတ်သစ် algorithms များကိုအသုံးပြုရန်အကြံပြုသည်။