PHP တွင် Crypt () တွင် password processing နှင့် data encryption ၏အခြေအနေများတွင်ကျယ်ပြန့်စွာအသုံးပြုသော hash encryption အတွက် function တစ်ခုဖြစ်သည်။ သို့သော် developer များစွာသည် Crypt () function ကို အသုံးပြု. တူညီသောအကြောင်းအရာကိုစာဝှက်သောအခါရှာဖွေတွေ့ရှိရန်အံ့အားသင့်ကြသည်။
ဤဆောင်းပါးသည်သင့်အားဤဖြစ်စဉ်နောက်ကွယ်ရှိအကြောင်းရင်းများကိုနက်နက်နဲနဲနားလည်ရန်နှင့် crypt () ကို မှန်ကန်စွာနှင့်လုံခြုံစွာမည်သို့အသုံးပြုရမည်ကိုသင်ပေးပါလိမ့်မည်။
crypt () ၏အနှစ်သာရသည် hash function သည် hash function ဖြစ်သည်။ ၎င်းသည်အချက်အလက်များကိုစကားဝှက်စစ်ဆေးခြင်းအတွက်အသုံးပြုသောနောက်ကြောင်းပြန်လှည့်နိုင်သော hash တန်ဖိုးများကိုထုတ်လုပ်ရန်အတွက်ဖြစ်သည်။
function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
string crypt(string $string, string $salt)
ဒါဟာနှစ်ခု parameters တွေကိုလက်ခံရရှိ:
$ string : စာဝှက်ထားတဲ့ string ကို။
$ ဆား - encryption လုပ်စဉ်အတွင်းအသုံးပြုသော "ဆားတန်ဖိုး" သည် hashing ရလဒ်ကိုအကျိုးသက်ရောက်စေသည်။
အကယ်. သင်သည်တူညီသော $ ဆားကို ဖြတ်သန်းပါက $ တူညီသော $ string ကို encrypting သည်သဘာဝကျကျတူညီသောရလဒ်ရရှိလိမ့်မည်။ ဤအရာသည်အဘယ်ကြောင့်သင်မြင်သနည်းဟု encryption ရလဒ်များသည်အမြဲတမ်းအတူတူပင်ဖြစ်သည်။
ဘာဖြစ်လို့လဲဆိုတော့သင် Crypt () ဟုခေါ်သည့်အခါသင်သည်သတ်မှတ်ထားသောဆားတန်ဖိုးကို အသုံးပြု. ဒုတိယ parameter $ ဆားကို ဖြတ်သန်းသွားသောကြောင့်ဖြစ်သည်။
PHP ၏ Crypt () သည် မည်သည့် ဆား မပေးဆပ်နိုင်သည့်အတွက်စနစ်ပုံမှန်မဟုတ်သောယန္တရားများကိုအသုံးပြုရန်ကြိုးစားသော်လည်းအချို့သောစနစ်များတွင်ဤယန္တရားသည် "ပုံမှန်အားဖြင့်ဆားကိုပုံမှန်အားဖြင့်အသုံးပြုသည်" ဖြစ်ပေါ်လာသည်။
အောက်ပါဥပမာကိုကြည့်ပါ။
echo crypt("mypassword", "m6"); // ပုံသေကိုသုံးပါ salt
ငါဒီကုဒ်ကိုငါ run တိုင်းအချိန်ဘယ်လောက်အကြိမ်ဘယ်လောက်ပဲနေပါစေ output ဟာအတူတူပါပဲ။ ဆိုလိုသည်မှာသင်သည်တိုက်ခိုက်သူတစ် ဦး သည်သင်သတ်မှတ်ထားသောဆားကိုအသုံးပြုနေသည်ကိုသိလျှင်သင်၏ system ကိုတိုက်ခိုက်ရန် Hash Table ကိုကြိုတင်တွက်ချက်နိုင်သည်။
** မှန်ကန်သောနည်းလမ်းမှာ - ကျပန်းဆားတန်ဖိုးများကိုသုံးပါ။ ** အသုံးပြုသူအတွက်စကားဝှက် hash ကိုထုတ်လုပ်တိုင်းဒေတာဘေ့စ်တွင်သီးခြားဆားကိုထုတ်လုပ်ပြီးသိမ်းဆည်းထားသည်။ ဤနည်းအားဖြင့်အသုံးပြုသူများနှစ် ဦး ၏စကားဝှက်များသည်အတူတူပင်ဖြစ်ပါက၎င်းတို့၏ hash တန်ဖိုးများကွဲပြားလိမ့်မည်။
PHP PHP 5shash () function ကို အသုံးပြု. phpp 5.5+ မှမိတ်ဆက်ပေးသောနည်းလမ်းဖြစ်သော surfer salt မျိုးဆက်မျိုးထုတ်လုပ်သည့်နည်းလမ်းတစ်ခုကို PHP ကအကြံပြုသည်။
$password = 'mypassword';
$hash = password_hash($password, PASSWORD_BCRYPT);
ဤလုပ်ဆောင်မှုသည်သင့်အတွက်ထူးခြားသောဆားကိုအလိုအလျောက်ထုတ်လုပ်ပြီးရလဒ်နှင့် ပတ်သက်. ပူးတွဲပါလိမ့်မည်။ တစ်ခုချင်းစီကိုပြေးကွဲပြားခြားနားသောရလဒ်များရလိမ့်မယ်:
// တစ်ခုချင်းစီကို output ကိုကွဲပြားခြားနားသည်
$hash1 = password_hash('mypassword', PASSWORD_BCRYPT);
$hash2 = password_hash('mypassword', PASSWORD_BCRYPT);
သို့သော်၎င်းတို့ကို Password_verify () မှတဆင့်မူရင်းစကားဝှက်ကိုအတည်ပြုရန်အသုံးပြုဆဲအသုံးပြုနိုင်သည်။
သင် crypt () ကို သုံးရန်လိုပါကကျပန်းဆားကိုကိုယ်တိုင်ထုတ်လုပ်ပါ။ ဒီမှာဥပမာတစ်ခုပါ။
function generate_salt($length = 22) {
return substr(strtr(base64_encode(random_bytes($length)), '+', '.'), 0, $length);
}
$password = 'mypassword';
$salt = '$2y$10$' . generate_salt(); // အသုံးပြု Blowfish algorithm
$hash = crypt($password, $salt);
ခေါ်ဆိုမှုတစ်ခုစီသည်မတူညီသောဆားတစ်ခုဖြစ်လိမ့်မည်။
စာဝှက်ထားတဲ့ရလဒ်များကိုနောက်ဆက်တွဲအတည်ပြုချက်အတွက်ဒေတာဘေ့စ်တွင်သိမ်းဆည်းထားသင့်သည်။ နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
// ဘယ်အချိန်မှာသိုလှောင်မှု
$hash = crypt($password, $salt);
// ဒေတာဘေ့စမှသိမ်းဆည်းပါ
// စိစစ်အတည်ပြုစဉ်အတွင်း
if (hash_equals($hash, crypt($inputPassword, $hash))) {
echo "စကားဝှက်မှန်";
} else {
echo "စကားဝှက်";
}
သတိပြုရန်မှာ Crypt ၏ဒုတိယ pareter သည်စာဝှက်ထားသည့် hash value သို့တိုက်ရိုက်ဖြတ်သန်းနိုင်ကြောင်းသတိပြုပါ။ PHP သည်ဆားကိုအလိုအလျောက်ထုတ်ယူလိမ့်မည်။
Crypt () () သင်သည်တူညီသောဆားကိုအသုံးပြုသောကြောင့်တူညီသောရလဒ်ကိုပြန်ပို့သည်။
လုံခြုံမှုရှိရန်သင်သည်ကျပန်းဆားကိုအသုံးပြုသင့်သည်, သို့မဟုတ် password_hash () ကို တိုက်ရိုက်သုံးသင့်သည်။
အထူးလိုအပ်ချက်မရှိပါကပရောဂျက်အသစ်များတွင် crypt () ကို ဆက်လက်အသုံးပြုရန်မလိုအပ်ပါ။
သက်တန့်စားပွဲတင်တိုက်ခိုက်မှုကိုတားဆီးရန် Hard-coded ဆားများကိုအမြဲတမ်းရှောင်ကြဉ်ပါ။
အသုံးပြုသူစကားဝှက်ထုတ်လုပ်မှုပါ 0 င်သည့်စနစ်တစ်ခုကိုတီထွင်သည့်အခါလုံခြုံရေးသည်အမြဲတမ်းထိပ်တန်း ဦး စားပေးဖြစ်သည်။ Crypt ၏အပြုအမူ၏အမူအကျင့်ကိုမှန်ကန်စွာနားလည်ခြင်းသည်သင့်ကိုပိုမိုတည်ငြိမ်။ ယုံကြည်စိတ်ချရသော application system တည်ဆောက်ရန်ကူညီလိမ့်မည်။