PHP တွင် Hash_Final () တွင် Hash extension မှပေးသော hash extension မှပေးထားသောအရေးကြီးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည် ။ ၎င်းကိုအသုံးပြုသောအခါ developer များစွာသည်၎င်းကို "ရလဒ်ရယူရန်" ၏ function တစ်ခုအဖြစ်ယူမှတ်ကြပြီး၎င်း၏ output ၏ဝိသေသလက္ခဏာများနှင့်အကောင်းဆုံးကိုလျစ်လျူရှုကြသည်။ ဤဆောင်းပါးသည် Hash_Final () ၏ပြန်လည်နေရာချထားရေးတန်ဖိုးကိုအသေးစိတ်ခွဲခြမ်းစိတ်ဖြာလိမ့်မည်, အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက်၎င်း၏ဝိသေသလက္ခဏာများ,
ပထမ ဦး စွာအခြေခံအသုံးပြုမှုကိုကြည့်ကြပါစို့။
<?php
$context = hash_init('sha256');
hash_update($context, 'Hello, World!');
$result = hash_final($context);
echo $result;
?>
ဤဥပမာတွင် hash_final () သည် sha256 algorithm မှတွက်ချက်သည့် hexadecimal string ကို ပြန်လည်ရောက်ရှိစေသည်။ ၎င်းသည် hash_final () ၏ default output formating ဖြစ်သည်။
?? မှတ်ချက် - Hash_final () ဟုခေါ်သည်နှင့်တစ်ပြိုင်နက်အခြေအနေကို "ပိတ်ထား " လိမ့်မည် ။ သင်တွက်ချက်မှုကိုပြန်လုပ်ရန်လိုအပ်ပါကသင် hash_copy () သို့မဟုတ် hash_init ကို သုံးရမည်။
hash_final () ၏ပြန်လာတန်ဖိုးနှစ်ခုပုံစံများရှိသည်။
Default (Hexadecimal String) - တိုက်ရိုက်ပြသရန်သို့မဟုတ်သိုလှောင်ရန်လွယ်ကူသည်။
မူရင်း binary format - အခြား binary data များနှင့်နှိုင်းယှဉ်ခြင်း,
Binary format ကိုရယူရန်သင်သည် စစ်မှန်သော parameter သည်အောင်မြင်နိုင်သည်။
<?php
$context = hash_init('sha256');
hash_update($context, 'Hello, World!');
$binaryResult = hash_final($context, true);
echo bin2hex($binaryResult); // အသုံးပြုbin2hexမူရင်း binary ၏ hexadecimal ကိုယ်စားပြုမှုကိုကြည့်ပါ
?>
? ထိပ်ဖျား : သင် URLs များ, ဒေတာဘေ့စ်များ, JSONS စသည့်စာသားပတ် 0 န်းကျင်များတွင် hash ကိုသိုလှောင်လိုပါက default (hexadecimal) output ကိုသုံးပါ။ အကယ်. ၎င်းကိုအဆင့်နိမ့်စာဝှက်ခြင်း, လက်မှတ်များစသည်ဖြင့်အသုံးပြုပါက Binary format ကိုအသုံးပြုရန်အကြံပြုသည်။
1 ?? နားလည်မှုလွဲခြင်း 1: hash_final () ကို အကြိမ်ပေါင်းများစွာဟုခေါ်သည် developer အတော်များများကသူတို့ဟာအကြိမ်ပေါင်းများစွာ haveh_final () ကို အကြိမ်ပေါင်းများစွာလုပ်နိုင်တယ်လို့ထင်ကြပေမယ့်တကယ်တော့အခြေအနေကိုခေါ်ပြီးနောက်မှာအခြေအနေကိုစွန့်ပစ်လိုက်ပြီးအမှားတစ်ခုထုတ်ပြန်ပြီးနောက်မှာအမှားတစ်ခုထုတ်ပြန်လိမ့်မယ်။ ဖြေရှင်းနည်းမှာ hash_copy ကို သုံးရန်ဖြစ်သည်။
<?php
$context = hash_init('sha256');
hash_update($context, 'data1');
$copy = hash_copy($context);
hash_update($context, 'data2');
$result1 = hash_final($copy);
$result2 = hash_final($context);
2 ?? နားလည်မှုလွဲခြင်း 2 - မူလ binary နှင့် hexadecimal အကြားတိုက်ရိုက်နှိုင်းယှဉ် <br> <br> မူရင်း binary ( true ) နှင့် hexadecimal (defaultececimal) ကွဲပြားခြားနားသော encoding formats များတွင်ရှိသည်။ တိုက်ရိုက်နှိုင်းယှဉ်ခြင်းသည်အမှားတစ်ခုဖြစ်ပေါ်စေလိမ့်မည်။ နှိုင်းယှဉ်သောအခါ, သင်သည် bin2hex () အသုံးပြုခြင်းကဲ့သို့သောပုံစံကိုပေါင်းစည်းရန်လိုအပ်သည်။
? ထိပ်ဖျား 1 - Segmented Segmented Hashing ဖိုင်
သင်ကြီးမားသောဖိုင်များကိုလုပ်ဆောင်လိုပါက hash_update () နှင့် hash_final () ကိုပေါင်းစပ်ရန် hash_update () နှင့် hash_final () ကို ပေါင်းစပ်ရန် segmented configent ကိုသုံးနိုင်သည်။
<?php
$context = hash_init('sha256');
$handle = fopen('/path/to/largefile.zip', 'rb');
while (!feof($handle)) {
$data = fread($handle, 8192);
hash_update($context, $data);
}
fclose($handle);
$hash = hash_final($context);
echo $hash;
?>
? သိကောင်းစရာ 2 - HMAC နှင့်သုံးပါ
HMAC သည်သော့ချက်အပေါ် အခြေခံ. မက်ဆေ့ခ်ျ authentication code ဖြစ်သည်။ PHP သည် Hash_HMAC () ကို လွယ်ကူစွာခေါ်ဆိုရန်ထောက်ပံ့ပေးသည်, သို့သော်သင်အခြေအနေကိုအသုံးပြုပါကပိုမိုရှုပ်ထွေးသောဖြစ်စဉ်များကိုကိုယ်တိုင်ဖြည့်ဆည်းပေးနိုင်သည်။
<?php
$context = hash_init('sha256', HASH_HMAC, 'secretkey');
hash_update($context, 'Important message');
$hmac = hash_final($context);
echo $hmac;
?>
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် hash_final () ၏ရလဒ်များကိုကွန်ယက်ထုတ်လွှင့်ခြင်း, interface calls, signature scrinness scrificate စသည်တို့ကဲ့သို့သောအသုံးပြုမှုဆိုင်ရာအခြေအနေများနှင့်ပေါင်းစပ်ရန်လိုအပ်သည်။ ဥပမာအားဖြင့်သင်လုပ်နိုင်သည်။
<?php
$file = 'installer.exe';
$secret = 'mysecret';
$context = hash_init('sha256', HASH_HMAC, $secret);
hash_update($context, $file);
$signature = hash_final($context);
$url = 'https://gitbox.net/download/' . $file . '?sig=' . $signature;
echo $url;
?>
ဤနည်းဖြင့်ထုတ်ပေးသော link တွင် sig parameter သည် hash_final () နှင့်ရရှိသောလုံခြုံသောလက်မှတ်ဖြစ်သည်။ Backend သည် download တောင်းဆိုမှု၏တရားဝင်မှုကိုတူညီသောနည်းဖြင့်အတည်ပြုနိုင်သည်။