PHP, Password_Hash () နှင့် password_verify () သည်စကားဝှက်စာဝှက်ခြင်းနှင့်အတည်ပြုခြင်းအတွက်လုပ်ဆောင်ချက်များဖြစ်သည်။ ၎င်းတို့၏ပေါင်းစပ်မှုသည်စကားဝှက်သိုလှောင်မှု၏လုံခြုံရေးကိုထိရောက်စွာတိုးတက်စေပြီးစကားဝှက်ယိုစိမ့်မှုနှင့်ကွဲအက်ခြင်းကိုကာကွယ်နိုင်သည်။ သို့သော် developer များစွာသည်သူတို့အသုံးပြုသော encryption algorithms နှင့် ပတ်သက်. မေးခွန်းများရှိနေသေးသည်။ ဤဆောင်းပါးသည် 4 င်းတို့၏ encryption algorithms နှင့်သူတို့စပ်ကြားဆက်နွယ်မှုကိုစူးစမ်းလေ့လာပါမည်။
Password_Hash () function ကို PHP 5.5 နှင့်အထက်တွင်ဖော်ပြထားပြီးသုံးစွဲသူ၏ Plaintext စကားဝှက်ကိုစာဝှက်ထားတဲ့စကားဝှက်တစ်ခုအဖြစ်ပြောင်းရန်အသုံးပြုသည်။ ၎င်းသည်ခေတ်မီဆေးထည့်ခြင်း algorithms ( bcrypt ကဲ့သို့သော algorithms များကိုအသုံးပြုသည်။ ဆားသည်စာဝှက်ထားသည့်အခါတိုင်းတူညီသော plaintext password သည်ကွဲပြားခြားနားသော hash တန်ဖိုးကိုထုတ်ပေးသောနောက်ထပ်ကျပန်းဒေတာတစ်ခုဖြစ်သည်။
ပုံမှန်အားဖြင့် Password_Hash () သည် BCRYPT algorithm ကိုအသုံးပြုသည်။ ၎င်းသည်ဆားအကြောင်းအရာများပါ 0 င်သည်။ စကားဝှက်များကိုသိုလှောင်သောအခါအပိုဆောင်းဆားမရှိပါ။ Bcrypt algorithm ကိုယ်တိုင်ကအလိုက်သင့်ပြောင်းလဲနိုင်ပြီး၎င်းသည် brute-for cracking ကိုခုခံတွန်းလှန်ရန်ကုန်ကျစရိတ်ကိုတိုးမြှင့်ခြင်းဖြင့်တွက်ချက်မှုပြင်းထန်မှုကိုမြှင့်တင်နိုင်သည်။
နမူနာကုဒ်:
<span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">'my_secure_password'</span></span><span>;
</span><span><span class="hljs-variable">$hashedPassword</span></span><span> = </span><span><span class="hljs-title function_ invoke__">password_hash</span></span><span>(</span><span><span class="hljs-variable">$password</span></span><span>, PASSWORD_BCRYPT);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$hashedPassword</span></span><span>;
</span></span>လျှို့ဝှက် နံပါတ်သည်ထည့်သွင်းထားသောစကားဝှက်သည်သိုလှောင်ထားသော hash တန်ဖိုးနှင့်ကိုက်ညီကြောင်းအတည်ပြုရန်အတွက်စကားဝှက်ကိုစစ်ဆေးရန်အသုံးပြုသည်။ အသုံးပြုသူမှ 0 င်ရောက်လာသည့်အခါစကားဝှက်ကိုဒေတာဘေ့စ်တွင်သိုလှောင်ထားသည့်စာဝှက်ထားသောစကားဝှက်ဖြင့်ထည့်သွင်းထားသော plaintext password ကိုထည့်သွင်းရန်ဖြစ်သည်။ Password_verify () သည် 0 င်ရောက်လာသောစကားဝှက်ကို encrypt လုပ်ထားသည့်အတွက် algorithm ကိုသုံးရန်ဖြစ်သည်။
၎င်းကို hash တန်ဖိုးရှိ algorithm ပေါ်တွင် အခြေခံ. စကားဝှက်ကို တွက်ချက်လိမ့်မည်ဟုမှတ်သားသင့်သည်။ ထို့ကြောင့် developer များသည် password_verify () အတွက် salually သို့မဟုတ် encryption algorithm ကိုလက်ဖြင့်ဖြတ်သန်းရန်မလိုအပ်ပါ။
နမူနာကုဒ်:
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">password_verify</span></span><span>(</span><span><span class="hljs-variable">$userInputPassword</span></span><span>, </span><span><span class="hljs-variable">$storedHash</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Password is correct!"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Invalid password!"</span></span><span>;
}
</span></span>Password_Hash () နှင့် Password_verify () အကြားနီးကပ်သောဆက်နွယ်မှုမှာစကားဝှက်အပြောင်းအလဲနဲ့စစ်ဆေးခြင်းအတွက်တူညီသော encryption algorithm ကိုအသုံးပြုသည်။ အထူးသဖြင့်:
စကားဝှက်စာဝှက်ခြင်း: Password_Hash () သည် plaintext password ကိုသတ်မှတ်ထားသော algorithm (ပုံမှန်အားဖြင့် Bcrypt ) အရစာဝှက်ထားသော Hash Valth သို့ပြောင်းလိမ့်မည်။ Hash Value တွင်ဆားနှင့်အခြား parameters များပါ 0 င်သည်။
စကားဝှက်စစ်ဆေးခြင်း - Password_verifier () သည် အသုံးပြုသူမှ algorithm သတင်းအချက်အလက်နှင့်ဆားကိုစာဖတ်ခြင်းဖြင့်စာဝှက်ခြင်းဖြင့် engorithm ( bcrypt ) ကိုအသုံးပြုသည်။
ထို့ကြောင့် password_verify () ကို algorithm နှင့် parametersters အတိအကျကို password_hash () အဖြစ် အသုံးပြု. စစ်ဆေးရန်အတည်ပြုရမည်။ အကယ်. Hash Value သည် BCRYPT , Password_verify () ကို အသုံးပြုသည်ဆိုပါက BCRYPT ကို အလိုအလျောက်အသုံးပြုလိမ့်မည်။
Password_Hash () bcrypt သို့ defaults ဖြစ်သော်လည်းအခြား algorithms များကိုလည်းထောက်ပံ့သည်။ PHP 7.2, Password_Hash () သည်ပိုမိုအားကောင်းသည့် algorithms, argon2i နှင့် argon2id နှစ်ခုကိုထောက်ခံသည်။ Argon2 သည် BCRYP ထက် GPU ပါဝါကွဲခြင်းအားကာကွယ်ရန်ပိုမိုကောင်းမွန်သောစွမ်းရည်ကိုပေးသောခေတ်မီဆေးထည့်သော algorithm တစ်ခုဖြစ်သည်။
argon2i ကို အသုံးပြု။ ဥပမာကုဒ်:
<span><span><span class="hljs-variable">$hashedPassword</span></span><span> = </span><span><span class="hljs-title function_ invoke__">password_hash</span></span><span>(</span><span><span class="hljs-variable">$password</span></span><span>, PASSWORD_ARGON2I);
</span></span>အကယ်. စကားဝှက်ကို argon2 algorithm ကို အသုံးပြု. စကားဝှက်ကို အသုံးပြု. စကားဝှက်ကိုစစ်ဆေးခြင်းအတွက်အလိုအလျောက်ခွဲခြားသတ်မှတ်ပြီးအသုံးပြုလိမ့်မည်။
Password_Hash () နှင့် Password_verify () သည် PHP တွင်စကားဝှက်စာဝှက်ခြင်းနှင့်အတည်ပြုခြင်းအတွက်အလွန်အရေးကြီးသောလုပ်ဆောင်ချက်နှစ်ခုဖြစ်သည်။ သူတို့၏ encryption algorithms သည်နီးကပ်စွာဆက်နွယ်သည်, password_hash () သည် hash တန်ဖိုးများကို အခြေခံ. စကားဝှက်၏မှန်ကန်မှုကိုအတည်ပြုရန်အသုံးပြုသည်။ နှစ် ဦး စလုံးသည်များသောအားဖြင့်စကားဝှက်သိုလှောင်မှုလုံခြုံရေးကိုသေချာစေရန်အတူတကွအသုံးပြုကြသည်။ Bcrypt algorithm ကိုပုံမှန်အားဖြင့်အသုံးပြုသော်လည်း PHP သည် SHAPON2 ကဲ့သို့သော algorithms များကိုလည်းထောက်ပံ့သည်။
Password_Hash () နှင့် password_verify) အသုံးပြုသော encryption algorithm ဆက်ဆံရေးကိုနားလည်ခြင်းအားဖြင့် developer များက developer များက Security Security Password သိုလှောင်မှုနှင့်အတည်ပြုခြင်းဆိုင်ရာယန္တရားများကိုပိုမိုကောင်းမွန်စွာဒီဇိုင်းဆွဲနိုင်သည်။