Hash Algorithms သည်လုံခြုံရေးဖွံ့ဖြိုးတိုးတက်မှုသို့မဟုတ်ဒေတာသမာဓိစစ်ဆေးခြင်းလုပ်ငန်းစဉ်များတွင်မရှိမဖြစ်လိုအပ်သောကိရိယာတစ်ခုဖြစ်သည်။ Hash_Final () သည် hash consext ( hash_context ) ၏အရေးကြီးသောအစိတ်အပိုင်းတစ်ခုဖြစ်သည့် Rich_final () သည်ကြွယ်ဝသော hash ဆက်စပ်မှုလုပ်ဆောင်ချက်များကိုပေးသည်။ Hash_final () ကို အသုံးပြုသည်ကိုဤဆောင်းပါးသည်အလွန်အမင်းဆန်းစစ်ကြည့်ရှုလိမ့်မည် ။
Hash_final () သည် Hash Hash Extraction မှ Hash Sext Oning လည်ပတ်မှုနှင့်နောက်ဆုံး hash တန်ဖိုးကိုပြန်ပို့ရန်အတွက် PHP Hash Extension မှပေးသော function တစ်ခုဖြစ်သည်။ ၎င်းကို hash_init () နှင့် hash_update () နှင့်အတူတကွအသုံးပြုလေ့ရှိသည်။ ၎င်းတို့အနက်သုံး ဦး သည် streaming hash တွက်ချက်မှုလုပ်ငန်းစဉ်ကိုပူးတွဲပြီးပါပြီ။
အခြေခံခေါ်ဆိုမှုနည်းလမ်းမှာအောက်ပါအတိုင်းဖြစ်သည် -
$context = hash_init('sha256');
hash_update($context, 'hello ');
hash_update($context, 'world');
$hash = hash_final($context);
echo $hash;
"Hello World" ၏ string ၏ Sha-256 hash တန်ဖိုးကို Sha-256 hash တန်ဖိုး။ ဤနည်းလမ်းသည်အထူးသဖြင့်ဖိုင်ကြီးများစီးဆင်းနေသောစာဖတ်ခြင်းနှင့်ဆေးထည့်ခြင်းကဲ့သို့သောကြီးမားသောဒေတာစီးများကိုကိုင်တွယ်ရန်သင့်လျော်သည်။
Hash_Context သည် hash_init () (PHP 8.1) (PHP 8.1 နောက်မှ hashcontext object itember) မှပြန်လာသောအရင်းအမြစ်အမျိုးအစားဖြစ်သည်။ ၎င်းသည်လက်ရှိ hash တွက်ချက်မှုအခြေအနေကိုသိမ်းဆည်းရန်အသုံးပြုသည်။ ဒေတာအားလုံးကိုတစ်ပြိုင်နက်တည်းဖြတ်သန်းသွားမည့်အစား Hash Content Awe ကိုအဆင့်ဆင့်အဆင့်မြှင့်ရန်ခွင့်ပြုသည်။
၎င်းသည်ကြီးမားသောဖိုင်များ (သို့) ကွန်ယက်ဒေတာများကိုကိုင်တွယ်ရန်အလွန်အဆင်ပြေသည်။ ဥပမာအားဖြင့်:
$context = hash_init('sha256');
$handle = fopen('https://gitbox.net/files/bigfile.zip', 'rb');
while (!feof($handle)) {
$chunk = fread($handle, 8192);
hash_update($context, $chunk);
}
fclose($handle);
$hash = hash_final($context);
echo "တင်သွင်းခြင်း SHA256 hash ဖြစ်ပါတယ်: $hash";
ဤချဉ်းကပ်မှုသည် Hash (Sha256 ', File_get_contentents (... )) ,
Hash_final () သည်အလွန်တိုက်ရိုက်ဖြစ်သော်လည်းအချို့သောအဆင့်မြင့်အသုံးပြုမှုဖြစ်ရပ်များတွင် Hash_Context ကိုမလုံလောက်သောနားလည်မှုမလုံလောက်ခြင်းသည်အချို့သောကြောင့်အချို့ကိုဖြစ်ပေါ်စေနိုင်သည်။ ဥပမာအားဖြင့်:
သင် hash_final () ကို စကားစပ်ဟုခေါ်ပြီးသည်နှင့်တပြိုင်နက်အခြေအနေတွင်မမှန်ကန်ပါ။
$context = hash_init('sha256');
hash_update($context, 'data1');
echo hash_final($context); // OK
echo hash_final($context); // အမှား:context ဖျက်ဆီးခံခဲ့ရသည်
အခြေအနေ၏မိတ္တူတစ်ခုဖန်တီးရန် Hash_Copy () ကို အသုံးပြုရန်မှာဖြေရှင်းနည်းမှာ -
$context = hash_init('sha256');
hash_update($context, 'data1');
// Preview အတွက်မိတ္တူတစ်ခုဖန်တီးပါ
$copy = hash_copy($context);
echo hash_final($copy); // ဒါကမူရင်းကိုဖျက်ဆီးလိမ့်မည်မဟုတ်ပါ context
// မူရင်းဖြစ်သော context ဆက်လက်အသုံးပြုရန်နိုင်ပါတယ်
hash_update($context, 'data2');
echo hash_final($context);
တခါတရံတွင် SHA256 နှင့် MD5 ကဲ့သို့သောတစ်ချိန်တည်းတွင် algorithms မျိုးစုံ၏ hash တန်ဖိုးများကိုတွက်ချက်ရန်လိုအပ်သည်။ အခင်းအကျင်းမျိုးစုံကိုအပြိုင်ဖြင့်သင်ဖတ်ရှုခြင်းကိုအကြိမ်ပေါင်းများစွာရှောင်ရှားနိုင်သည်။
$ctx_sha256 = hash_init('sha256');
$ctx_md5 = hash_init('md5');
$handle = fopen('https://gitbox.net/files/sample.txt', 'rb');
while (!feof($handle)) {
$chunk = fread($handle, 4096);
hash_update($ctx_sha256, $chunk);
hash_update($ctx_md5, $chunk);
}
fclose($handle);
echo "SHA256: " . hash_final($ctx_sha256) . "\n";
echo "MD5: " . hash_final($ctx_md5) . "\n";
ဤနည်းသည်မှတ်တမ်းအတည်ပြုခြင်းနှင့်ဂီယာအတည်ပြုခြင်းတွင်အလွန်လက်တွေ့ကျသည်။
Hash_Context ၏နောက်ထပ်အားသာချက်တစ်ခုမှာ၎င်းသည်အချက်အလက်များကိုသမာဓိရှိသည့်အချက်အလက်များ၏သမာဓိကိုစစ်ဆေးရန်အသုံးပြုနိုင်သည်။ ဥပမာအားဖြင့်, hash_update_stream () နှင့် hash_copy () ကိုပေါင်းစပ်ခြင်း, breakpoint ဆက်လက်ဆက်လက်တည်တံ့စေရန်ယုံကြည်စိတ်ချရသော hash verification ယန္တရားတစ်ခုတည်ဆောက်နိုင်သည်။
$ctx = hash_init('sha256');
$stream = fopen('https://gitbox.net/api/stream/file/12345', 'rb');
while ($chunk = fread($stream, 1024)) {
hash_update($ctx, $chunk);
// breakpoint အနေအထားကို Savate Simulate
if (/* အချို့သောအခြေအနေများတွင်အဆက်ပြတ် */ false) {
$ctx_copy = hash_copy($ctx);
file_put_contents('hash_checkpoint.dat', serialize($ctx_copy));
break;
}
}
fclose($stream);
$final_hash = hash_final($ctx);
echo "နောက်ဆုံး hash ဖြစ်ပါတယ်: $final_hash";
PHP ၏ hash_final () function သည်သေးငယ်သော်လည်းရှုပ်ထွေးပြီးထိရောက်သော hash အလုပ်များကို hash_context ၏ပြောင်းလွယ်ပြင်လွယ်မှုဖြင့်ကိုင်တွယ်နိုင်သည်။ ၎င်း၏အခြေအနေကိုနားလည်ခြင်းနှင့် hash_copy နှင့်အတူကူးယူခြင်း () ကိုစီမံရန်သင်ယူခြင်းသည်သင်ပိုမိုခိုင်မာသည့် hash processing ယုတ္တိဗေဒကိုရေးရန်ကူညီလိမ့်မည်။ ဖိုင်ကြီးများသည်ကြီးမားသောဖိုင်များကိုပြုပြင်ခြင်း, ဒေတာသမာဓိစောင့်သိမှုအတည်ပြုခြင်း,