PHP တွင် crypt () function ကို password များကိုသိုလှောင်ခြင်းနှင့်အတည်ပြုရန်အသုံးပြုသောတစ်လမ်းတည်းကိုဆေးထည့်ရန်ကြိုးများကိုစာဝှက်ရန်အသုံးပြုသည်။ ၎င်း၏အသုံးပြုမှုသည်ကွဲပြားခြားနားသောပလက်ဖောင်းများပေါ်တွင်တူညီသည်ရှိသော်, crypt () မှပြန်လာသောရလဒ်များသည်ကွဲပြားခြားနားသော operating systems, အထူးသဖြင့် Windows နှင့် Linux တို့တွင်မကြာခဏကွဲပြားခြားနားသည်။ ဤခြားနားချက်သည်များစွာသော developer များကိုရှုပ်ထွေးစေသည်။ ဤဆောင်းပါးသည်အကြောင်းပြချက်များကိုနက်ရှိုင်းစွာခွဲခြမ်းစိတ်ဖြာပြီးဖြေရှင်းနည်းများပေးလိမ့်မည်။
Crypt () သည် interface function တစ်ခုဖြစ်ပြီးနောက်ခံအကောင်အထည်ဖော်မှုသည် operating system မှပေးထားသော encryption algorithm ပေါ်တွင်မူတည်သည်။ ၎င်းသည်ပုံမှန်အားဖြင့် Des, MD5, Sha-256, Sha-512 အပါအ 0 င်စာဝှက်စနစ် algorithms အမျိုးမျိုးကိုအထောက်အကူပြုသည်။
ခေါ်ဆိုမှုပုံစံဥပမာ -
$hash = crypt('mypassword', '$6$rounds=5000$usesomesillystringforsalt$');
ဒီမှာဒုတိယ parameter သည်ဆားဖြစ်ပြီးဆားဖြစ်ပြီး encryption algorithm နှင့် encryption ကိုအားပေးသည်။
Linux သည် Glibc (GNU C Library) ကို အခြေခံ. crypt (gnu c) ကို အခြေခံ. crypt (gnu c) ကို အသုံးပြု. ခေတ်မီဆေးထည့်ခြင်း algorithms (Sha-256, Sha-512 စသည်) ကိုထောက်ပံ့သည်။
0 င်းဒိုးတွင် built-in crypt () အကောင်အထည်ဖော်မှုမရှိပါ။ PHP သည် 0 င်းဒိုးတွင်အခြေခံအဆောက်အအုံများကိုအသုံးပြုလိမ့်မည်။
Linux တွင် Sha-512 ဆား parameters များကိုအသုံးပြုသောအခါ၎င်းသည်သက်ဆိုင်ရာ Hash ကိုမှန်ကန်စွာထုတ်လုပ်နိုင်ပြီး Windows သည်ဤဆားပုံစံကိုအသိအမှတ်မပြုနိုင်ပါ။
ကွဲပြားခြားနားသော PHP ဗားရှင်းများသည် crypt () ၏ပံ့ပိုးမှုကိုပိုမိုကောင်းမွန်စေရန်နှင့်ဖြည့်ဆည်းပေးနိုင်သည်။ သို့သော်နောက်ခံအလွှာသည်စနစ်စာကြည့်တိုက်ပေါ်တွင်မူတည်သည်။ 0 င်းဒိုးလက်အောက်ရှိ PHP သည်များသောအားဖြင့်ပြည်တွင်းအကောင်အထည်ဖော်မှုကိုသာမှီခိုအားထားနိုင်သည်။
Linux သည်ကြွယ်ဝသောဆားပုံစံများကိုထောက်ပံ့သည်။
$ 1 $ MD5 ဆိုလိုသည်
$ 5 $ ကိုဆိုလိုသည် Sha-256
$ 6 $ ကိုဆိုလိုသည် Sha-512
0 င်းဒိုးသည် ဒေါ်လာ 1 ဒေါ်လာ စသည့်ရိုးရှင်းသောပုံစံများကိုသာအသိအမှတ်ပြုနိုင်ပြီးရှုပ်ထွေးသောပုံစံများကိုလျစ်လျူရှုလိမ့်မည်။
PHP 5.5 နောက်ပိုင်းတွင်ပိုမိုခေတ်မီပြီးပေါင်းစည်းထားသောစကားဝှက် hash interface ကိုမိတ်ဆက်ခဲ့သည်။
$hash = password_hash('mypassword', PASSWORD_DEFAULT);
if (password_verify('mypassword', $hash)) {
echo "စကားဝှက်ကိုစစ်ဆေးခြင်းအောင်မြင်ခဲ့သည်";
}
၎င်းသည်မတူညီသောစနစ်များပေါ်တွင်မတူကွဲပြားသောအကျင့်ကိုကျင့်ခြင်းဆိုင်ရာ ပြ problem နာကိုရှောင်ရှားခြင်း,
လက်စွဲ splicing အစားဆားထုတ်လုပ်ရန်စံသတ်မှတ်ထားသော interfaces များကိုအသုံးပြုရန်ကြိုးစားပါ။ လက်ဖြင့်ဆားချိန်ညှိခြင်းနှင့်လိုက်လျောညီထွေဖြစ်ခြင်းနှင့်လုံခြုံမှုအန္တရာယ်များကိုဖြစ်ပေါ်စေသည်။
အကယ်. သင်သည် Crypt () ကို သုံးရန်လိုပါက algorithm ကွဲပြားခြားနားမှုများကြောင့်အတည်ပြုခြင်းပျက်ကွက်မှုကြောင့်အတည်ပြုခြင်းစနစ်ပေါ်တွင်စစ်ဆေးရန်သေချာအောင်လုပ်ပါ။
<?php
// အကြံပြုအသုံးပြုမှု password_hash ရေှးယူနိုင်ခြင်း crypt
$password = 'mypassword';
$hash = password_hash($password, PASSWORD_DEFAULT);
echo "Hash ရလဒ်:" . $hash . PHP_EOL;
// စကားဝှက်ကိုစစ်ဆေးပါ
if (password_verify($password, $hash)) {
echo "စကားဝှက်ကိုစစ်ဆေးခြင်းအောင်မြင်ခဲ့သည်";
} else {
echo "စကားဝှက်ကိုစစ်ဆေးခြင်းမအောင်မြင်ပါ";
}
?>
ဤနည်းလမ်းသည် Windows နှင့် Linux ပတ် 0 န်းကျင်နှစ်ခုလုံးတွင်တသမတ်တည်းစွမ်းဆောင်ရည်ကိုသေချာစေပြီးလုံခြုံစိတ်ချရသော algorithm ကိုအသုံးပြုသည်။