Hash လုပ်ဆောင်ချက်များသည်ဒေတာသမာဓိစစ်ဆေးခြင်းသို့မဟုတ်စကားဝှက်စစ်ဆေးခြင်းကိုလုပ်ဆောင်သောအခါအလွန်အသုံးများသောကိရိယာတစ်ခုဖြစ်သည်။ သို့ရာတွင် Hash နှိုင်းယှဉ်ခြင်း (ဥပမာ - ==== စသည်တို့ ) ကိုသာအသုံးပြုခြင်းနှင့်ထိရောက်စွာရှာဖွေတွေ့ရှိခြင်းနှင့်ထိရောက်စွာရှာဖွေတွေ့ရှိခြင်းမရှိပါ။ လုံခြုံရေးတိုးတက်စေရန် PHP သည်လုပ်ဆောင်ချက်နှစ်ခုကိုထောက်ပံ့ပေးသည်။ Hash_final နှင့် Hash_equals သည် developer များကို Hash စစ်ဆင်ရေးများကိုပိုမိုလုံခြုံစွာကိုင်တွယ်ရန်ကူညီပေးသည်။
ဤဆောင်းပါးသည်ဤလုပ်ဆောင်မှုနှစ်ခု၏အသုံးပြုမှုကို အသုံးပြု. Hash တိုက်ပွဲများအောင်မြင်ရန်၎င်းတို့ကိုမည်သို့အသုံးပြုရမည်ကိုသရုပ်ပြရန်လက်တွေ့ကျသောဥပမာကိုအသုံးပြုပါမည်။
hash_final သည် hash_init နှင့် hash_update ကို အသုံးပြု. ခြေလှမ်း - အဆင့်မြင့်တွက်ချက်မှုများကိုဖန်တီးသောအခါနောက်ဆုံးအဆင့်ဖြစ်သည်။ ဒါဟာနောက်ဆုံး hash တန်ဖိုးကိုပြန်ပို့။
ဥပမာ -
<?php
$context = hash_init('sha256');
hash_update($context, 'hello');
$hash = hash_final($context);
echo $hash;
ဒီမှာ Sha-256 ၏ hash connection ကို hash_init နှင့်အတူ Hash asonext ကိုစတင်ပါ။ ထို့နောက်ဒေတာများကို hash ဖြစ်ရန် Hash_update ကို အသုံးပြုပါ။
Hash_equals သည် hash တန်ဖိုးနှစ်ခုကိုလုံခြုံစွာနှိုင်းယှဉ်ရန်အသုံးပြုသည်။ == ကို တိုက်ရိုက်အသုံးပြုခြင်းနှင့်မတူသည်မှာ string နှင့်နှိုင်းယှဉ်လျှင်ပြိုင်ပွဲများကြောင့်ဖြစ်ရတဲ့ အချိန်ကိုက်တိုက်ခိုက်မှုများကို စောစီးစွာကာကွယ်နိုင်သည်။ အချိန်ကာလသည်စစ်ဆင်ရေးအတွက်လိုအပ်သောအချိန်ကိုတိုင်းတာခြင်းအားဖြင့်အထိခိုက်မခံသောသတင်းအချက်အလက်များကိုသတ်မှတ်သည့်တိုက်ခိုက်မှုနည်းလမ်းဖြစ်သည်။
ဥပမာ -
<?php
$knownHash = hash('sha256', 'known_value');
$userInputHash = hash('sha256', $_POST['input']);
if (hash_equals($knownHash, $userInputHash)) {
echo 'အောင်မြင်စွာကိုက်ညီပါ!';
} else {
echo 'ပွဲစဉ်မအောင်မြင်ပါ。';
}
အသုံးပြုသူမှထည့်သွင်းထားသောတန်ဖိုးသည်မှန်ကန်သောတန်ဖိုး၏အစိတ်အပိုင်းတစ်ခုသာလျှင်ပင် hash_equals နှိုင်းယှဉ်မှုဖြစ်စဉ်တွင်အချိန်ကွာခြားမှုကိုရှောင်ရှားရန် Hash_equals သည် byte byte ကိုလုံးဝနှိုင်းယှဉ်ပါမည်။
အသုံးပြုသူမှလက်ရှိပ conflicts ိပက်ခများက 4 င်းတို့ကို Hash (i.e. ကွဲပြားခြားနားသောဒေတာများသည်တူညီသော hash တန်ဖိုးကိုထုတ်လုပ်သည်) နှင့်ပ conflicts ိပက်ခများမှတင်ပြသောအချက်အလက်များကိုရှာဖွေရန်လိုသည်ဆိုပါစို့။ ငါတို့လုပ်နိုင်တယ် -
ရှိပြီးသားဒေတာများ၏ hash တွက်ချက်ရန် hash_init , hash_update နှင့် hash_final ကို သုံးပါ။
အသုံးပြုသူအချက်အလက် hash ကိုတူညီသောနည်းဖြင့်တွက်ချက်ပါ။
hash values နှစ်ခုကိုနှိုင်းယှဉ်ရန် hash_equals များကို သုံးပါ။
နမူနာကုဒ်:
<?php
// ရှိပြီးသားဒေတာကိုတုပ
$existingData = 'Original content';
$context1 = hash_init('sha256');
hash_update($context1, $existingData);
$existingHash = hash_final($context1);
// အသုံးပြုသူ - တင်သွင်းဒေတာ
$userData = $_POST['user_data'];
$context2 = hash_init('sha256');
hash_update($context2, $userData);
$userHash = hash_final($context2);
// Hash တန်ဖိုးများကိုနှိုင်းယှဉ်
if (hash_equals($existingHash, $userHash)) {
echo 'Hash ပ conflict ိပက်ခတွေ့ရှိ!ဒေတာများသည်အတူတူပင်ဖြစ်နိုင်သည်သို့မဟုတ်အတူတူပင် hash တန်ဖိုးကိုထုတ်လုပ်နိုင်သည်。';
} else {
echo '未Hash ပ conflict ိပက်ခတွေ့ရှိ。';
}
သတိပြုရန်:
ဒေတာများသည်အတူတူပင်ဖြစ်သောကြောင့်အလားတူ Hash တန်ဖိုးသည်ဖြစ်နိုင်ချေရှိသောကြောင့်၎င်းသည်ရှားပါး hash တိုက်မှုကြောင့်သီအိုရီအရဖြစ်ကောင်းဖြစ်လိမ့်မည်။ ထို့ကြောင့်ဤရှာဖွေမှုနည်းလမ်းသည်ဒေတာရှေ့တန်းညှိနှိုင်းမှုကိုတရားစီရင်ရန် Hash အပေါ်လုံးလုံးမှီခိုအားထားခြင်းထက်ကာကွယ်ရေးသို့မဟုတ်စိစစ်အတည်ပြုရန်ပိုမိုသင့်တော်သည်။
Hash_final နှင့် Hash_equals များကို အသုံးပြုခြင်းသည် hashes များကိုလုံခြုံစွာတွက်ချက်နိုင်ပြီးနှိုင်းယှဉ်ခြင်းနှင့်နှိုင်းယှဉ်နိုင်သည်။ လုံခြုံရေးပါ 0 င်သည့်အခြေအနေများတွင်ရိုးရှင်းသော string နှိုင်းယှဉ်မှုများအစားဤကိရိယာများကိုအသုံးပြုရန်အကြံပြုသည်။
ဥပမာအပလီကေးရှင်းများတွင်ဥပမာ -
တင်ထားသောဖိုင်များ၏သမာဓိကိုစစ်ဆေးပါ
စကားဝှက်ကိုအတည်ပြုရန် ( password_hash နှင့် password_verify ) ဖြင့်အသုံးပြုပါ
interface ခေါ်ဆိုမှု၏လက်မှတ်ကို detect
ဤလုပ်ဆောင်ချက်များကိုလုံခြုံရေးတိုးတက်စေရန်အသုံးပြုနိုင်သည်။
သင်ပိုမိုသိလိုပါက တရားဝင် PHP မှတ်တမ်းများကို စစ်ဆေးရန်အကြံပြုသည်။