Hash_Final သည် Hash အခြေအနေမှနောက်ဆုံး hash တန်ဖိုးကိုရရှိရန် PHP တွင်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ များသောအားဖြင့် hash_init နှင့် hash_update လုပ်ဆောင်ချက်များကို hash တန်ဖိုးများကိုတဖြည်းဖြည်းချင်းတည်ဆောက်ရန် hash_init နှင့် hash_update လုပ်ဆောင်ချက်များကိုအသုံးပြုလိမ့်မည်။ hash_final မှရရှိသော hash တန်ဖိုးမပြောင်းလဲနိုင်သောအရာများဖြစ်သည်။
string hash_final ( resource $context [, bool $raw_output = false ] )
$ Context : Hash အခြေအနေကို hash_init နှင့် hash_update ကဲ့သို့သောလုပ်ဆောင်ချက်များကိုမှတဆင့်ဖန်တီးခဲ့သည်။
$ Raw_Output : အကယ်. မှန်ကန် ပါကမူရင်း binary data များကိုပြန်ပို့လိမ့်မည်။ အကယ်. မှားယွင်းသော (ပုံမှန်) ဆိုလျှင် hexadecimal string ကိုပြန်လည်ရောက်ရှိလိမ့်မည်။
<?php
$data = "Hello, World!";
$context = hash_init('sha256');
hash_update($context, $data);
$hash = hash_final($context);
echo "Hash value: " . $hash;
?>
ရလဒ်ရလဒ် -
Hash value: a591a6d40bf420404a011733cfb7b190d62c65bf0bcda01c8007c6f4adf4a0a2
ဤဥပမာတွင် Hash_init ကို SHA-256 hash အခြေအနေကိုစတင်ရန်, Hash Data ကို update လုပ်ရန် hash_update ကို အသုံးပြု. နောက်ဆုံး hash value မှနောက်ဆုံးပေါ် hash တန်ဖိုးကိုရယူပါ။
Hash_equals function သည် php ၏ function တစ်ခုဖြစ်ပြီး Hash တန်ဖိုးနှစ်ခုကိုလုံခြုံစွာနှိုင်းယှဉ်ရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ ၎င်းသည်အချိန်တိုက်ခိုက်မှုများကိုကာကွယ်ရန်အဓိကကိရိယာတစ်ခုဖြစ်သည်။ hash_equals မရှိခြင်းကြောင့်ရိုးရှင်းသော == အော်ပရေတာနှိုင်းယှဉ်မှုတန်ဖိုးသည်အချို့သောသတင်းအချက်အလက်များကိုဖော်ထုတ်ရန်ဟက်ကာများကိုအမြတ်ထုတ်ရန်အတွက်အမြတ်ထုတ်နိုင်သည့်အခက်အခဲများကြောင့်ယိုစိမ့်မှုကြောင့်ယိုစိမ့်မှုကိုဖြစ်ပေါ်စေနိုင်သည်။
Hash_equals သည် မည်သည့်ကိစ္စတွင်မဆိုထိုအချိန်ကိုတစ်ချိန်တည်းတွင်ကြိုးနှစ်ချောင်း၏တန်ဖိုးများကိုနှိုင်းယှဉ်ခြင်းအားဖြင့်အချိန်ကုန်ခံပြီးအချိန်တိုက်ခိုက်မှုများကိုရှောင်ရှားခြင်းအားဖြင့်ဖြစ်သည်။
bool hash_equals ( string $known_string , string $user_string )
$ Meathstring : လူသိများသော hash တန်ဖိုး (များသောအားဖြင့်ဒေတာဘေ့စ်တွင်သိမ်းထားသော hash တန်ဖိုး) ။
$ user_string : အသုံးပြုသူမှထည့်သွင်း hash တန်ဖိုး။
<?php
$stored_hash = "a591a6d40bf420404a011733cfb7b190d62c65bf0bcda01c8007c6f4adf4a0a2";
$user_input = "Hello, World!";
if (hash_equals($stored_hash, hash('sha256', $user_input))) {
echo "The hashes match.";
} else {
echo "The hashes do not match.";
}
?>
ရလဒ်ရလဒ် -
The hashes match.
ဤဥပမာတွင် Hash_equals သည်သိုလှောင်ထားသော Hash တန်ဖိုးကိုအသုံးပြုသူ input hash value နှင့်လုံခြုံစွာနှိုင်းယှဉ်ရန်အသုံးပြုသည်။ နှစ်ခု hashes တန်းတူလျှင်, input ကိုမှန်ကန်သည်ကိုဆိုလိုသည်။
များသောအားဖြင့် hash တန်ဖိုးများကိုတွက်ချက်ခြင်းနှင့်လုံခြုံစွာနှိုင်းယှဉ်ခြင်းများကိုသေချာစေရန် hash_final နှင့် hash_equals များကို အတူတကွအသုံးပြုသည်။ ဥပမာအားဖြင့်ကျွန်ုပ်တို့သည်စကားဝှက်စစ်ဆေးခြင်းကိုကိုင်တွယ်ဖြေရှင်းသည့်အခါ hash_final ကို ပထမဆုံး အသုံးပြု. စကားဝှက်၏ hash တန်ဖိုးကိုဖန်တီးရန် Hash_equals များကို ဒေတာဘေ့စ်တွင်သိမ်းဆည်းထားသော hash တန်ဖိုးကိုလုံခြုံစွာနှိုင်းယှဉ်ရန်အသုံးပြုပါ။
<?php
// အသုံးပြုသူမှတင်သွင်းသောစကားဝှက်ကိုယူဆပါ
$user_input_password = "user_password123";
// စကားဝှက် Hash သည်ဒေတာဘေ့စ်တွင်သိုလှောင်ထားသည်(ဥပမာ, hard code ထဲမှာ)
$stored_password_hash = "a591a6d40bf420404a011733cfb7b190d62c65bf0bcda01c8007c6f4adf4a0a2";
// သွား hash_final input password ၏ hash တန်ဖိုးကိုတွက်ချက်ပါ
$context = hash_init('sha256');
hash_update($context, $user_input_password);
$user_input_hash = hash_final($context);
// အသုံးပြု hash_equals စကားဝှက် Hash တန်ဖိုးများကိုလုံခြုံစွာနှိုင်းယှဉ်ပါ
if (hash_equals($stored_password_hash, $user_input_hash)) {
echo "Password is correct.";
} else {
echo "Password is incorrect.";
}
?>
ရလဒ်ရလဒ် -
Password is correct.
ဤဥပမာတွင်သုံးစွဲသူထည့်သွင်းထားသောစကားဝှက်၏ hash တန်ဖိုးကိုတွက်ချက်ရန် hash_final ကို အသုံးပြု. ၎င်းကို hash_equals မှတစ်ဆင့်သိုလှောင်ထားသော hash တန်ဖိုးနှင့်နှိုင်းယှဉ်ပါ။ ဤနည်းအားဖြင့် Hash နှိုင်းယှဉ်မှု၏လုံခြုံရေးကိုသေချာစေရန်နှင့်ဖြစ်နိုင်ချေရှိသောအချိန်တိုက်ခိုက်မှုများကိုကာကွယ်ပေးသည်။