PHP မှ crypt () function သည် strings (များသောအားဖြင့်စကားဝှက်များ) encrypt လုပ်ရန်အဓိက function တစ်ခုဖြစ်သည်။ ၎င်းသည်စနစ်၏အခြေခံစာဝှက်စနစ် algorithm နှင့်စကားဝှက်များကိုလုံခြုံစိတ်ချရသောသိုလှောင်မှုနှင့်စကားဝှက်များကိုစစ်ဆေးရန် input string ကိုအခြေခံသည်။ Crypt () function ၏အခြေခံအသုံးပြုမှုနှင့်ရည်ရွယ်ချက်သည် PHP ဗားရှင်းများ၌တသမတ်တည်းဖြစ်သော်လည်း၎င်း၏ပြည်တွင်းအကောင်အထည်ဖော်မှုတွင်အရေးပါသောကွဲပြားခြားနားမှုများရှိပြီး PHP နှင့် operating system versions အဖြစ် algorithms ကိုထောက်ပံ့သည်။ ဤကွဲပြားခြားနားမှုများသည် password security security security security နှင့် application compatibility ကိုတိုက်ရိုက်အကျိုးသက်ရောက်သည်။
crypt () parameters နှစ်ခုကိုလက်ခံသည်။
$hashed_password = crypt($password, $salt);
$ စကားဝှက် သည် plaintext password သို့မဟုတ် string တစ်ခုဖြစ်ပါတယ်။
$ ဆားကို encryption algorithm ၏ဆားတန်ဖိုးကိုထိန်းချုပ်ရန်အသုံးပြုသည်။ ကွဲပြားခြားနားသောပုံစံများ encryption algorithm ၏ရွေးချယ်မှုကိုဆုံးဖြတ်ရန်။
Return Value သည်စာဝှက်ထားသည့် string တစ်ခုဖြစ်သည်။ စကားဝှက်ကိုအတည်ပြုသည့်အခါရလဒ်များကိုတသမတ်တည်းရှိမရှိနှင့်နှိုင်းယှဉ်လျှင်စကားဝှက်ကိုပြန်လည်ဝှက်ရန်အသုံးပြုလိမ့်မည်။
အစောပိုင်း PHP ဗားရှင်း (PHP 4.x, PHP 5.2)
System မှပေးထားသောစံသတ်မှတ်ထားသော des encryption ကိုသာ (56-bit keys အပေါ် အခြေခံ. ဆားသည်စာလုံးရေ 2 လုံးဖြစ်သည်),
အကယ်. ထောက်ပံ့ပေးသောဆားပုံစံသည်မမှန်ကန်ပါက Crypt () သည် des des encryption ကို အသုံးပြု. ယိုယွင်းလိမ့်မည်။
PHP 5.3 နှင့်ကျော်လွန်ပြီး
MD5 ကဲ့သို့သောခေတ်မီစာဝှက်စနစ်နှင့် MD5 ကဲ့သို့သော Modern encryithms (ဆားပုံစံသည် ဒေါ်လာ 1 ဒေါ်လာ ဖြင့်စတင်သည်),
Blowish ကိုထောက်ပံ့သည် (PHP ဗားရှင်းပေါ်တွင် မူတည်. ဆားပုံစံဖြင့် ဒေါ်လာ 2 ဒေါ်လာ ဖြင့် ဒေါ်လာ 2 ဒေါ်လာဖြင့်ဒေါ်လာ 2 ဒေါ်လာ ဖြင့်စတင်သည်),
SHA-256 ( $ 5 $ ) နှင့် Sha-512 (SHA-512) နှင့် Sha-512 ( $ 612 ) ကဲ့သို့သော algorithms များကို operating system's Libc စာကြည့်တိုက်ပံ့ပိုးမှုပေးသည်။
PHP 7.x
Blowfish Support ကိုဆက်လက်တိုးတက်အောင်ဆက်လက်ပြုလုပ်ရန်နှင့်သမိုင်းတွင်လုံခြုံရေးအားနည်းချက်များကိုဆက်လက်ပြင်ဆင်ပါ (ဥပမာ $ 2A $ ၏သက်ရောက်မှုအဖြစ်)
PHP 7.3 နောက်ပိုင်းတွင် $ 2Y $ tag, ပိုမိုလုံခြုံသော blowish ဗားရှင်းကိုမိတ်ဆက်ခဲ့သည်။
မတူညီသောစနစ်များအတွက်အထောက်အပံ့သည်ပိုမိုမြင့်မားပြီး algorithms ပိုမိုများပြားလာသည်။
PHP 8.x
အထက်ပါ algorithms များအတွက်ထောက်ခံမှုကိုထိန်းသိမ်းရန်နှင့်လုံခြုံရေးနှင့်လိုက်ဖက်တဲ့ကိုအာရုံစိုက်ပါ။
PHP ၏ဇာတိစကားဝှက် hash functions passwords passwords password_hash () နှင့် password_verify ()) ကို အသုံးပြုရန်အကြံပြုသည်။ သို့သော် crypt () သည်ရရှိနိုင်ဆဲဖြစ်သည်။
Crypt () function သည် encryption operation ကိုပြီးစီးရန်အတွက် operating system ၏ Libc စာကြည့်တိုက် (GNU Libc Libc Libc) တွင်ပါ 0 င်သည်။
Supported Algorithms သည်မတူညီသော operating systems များရှိ PHP ဗားရှင်း (Linux, Freebsd, Windows) တွင်လုံးလုံးလျားလျားအစဉ်မပြတ်တသမတ်တည်းမဖြစ်နိုင်ပါ။
Crypt () 0 င်းဒိုးတွင်ပံ့ပိုးမှုသည်အလွန်အကန့်အသတ်ဖြင့်သာဖြစ်ပြီးများသောအားဖြင့်ရိုးရာ des encryption ကိုသာထောက်ပံ့သည်။
Linux သည် libc ဗားရှင်းပေါ် မူတည်. algorithms မျိုးစုံကိုထောက်ပံ့သည်။
ကွဲပြားခြားနားသော encryption algorithms အကြားလုံခြုံရေး၌ကြီးမားသောကွာဟမှုရှိပါတယ်။ အစောပိုင်း des encryption algorithms အလွယ်တကူအက်ကွဲနိုင်ပြီးထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်အသုံးမ 0 င်သင့်ပါ။ PHP ဗားရှင်းနှင့် operating systems shifish, sha-512 ကဲ့သို့သော algorithms (sha-512) ကိုထောက်ပံ့သော PHP ဗားရှင်းစနစ်များသည်စကားဝှက်သိုလှောင်မှု၏လုံခြုံရေးကိုများစွာတိုးတက်စေနိုင်သည်။
အကယ်. application သည် crypt () ပေါ်တွင်မူတည်ပါက, PHP ဗားရှင်းကိုအဆင့်မြှင့်တင်ခြင်းသို့မဟုတ် operating system ကိုအဆင့်မြှင့်တင်သည့်အခါ php ဗားရှင်းကိုအဆင့်မြှင့်တင်သည့်အခါ php phivage ကိုအဆင့်မြှင့်တင်သည့်အခါ php ဗားရှင်းကိုအဆင့်မြှင့်တင်ခြင်းအတွက်စကားဝှက်စစ်ဆေးခြင်းပျက်ကွက်မှုဖြစ်ပေါ်နိုင်သည်။
ဥပမာအားဖြင့်စနစ်ဟောင်းသည်လူဝင်မှုကြီးကြပ်ရေးအပြီးတွင် SHA-512 ဖြစ်လာသည်။ ပြောင်းရွှေ့ပြီးနောက် SHA-512 ဖြစ်လာသည်။
ထို့ကြောင့် application တွင်ဆားပုံစံကိုအတိအလင်းဖော်ပြရန်သို့မဟုတ်ပိုမိုခေတ်မီသောစကားဝှက်ထုတ်လုပ်မှု interface ကိုချမှတ်ရန်အကြံပြုသည်။
PHP အရာရှိက PHP အရာရှိ Phild_Hash () နှင့် passwordyify) ကိုဗားရှင်း 5.5 တွင်ဖော်ပြထားသည်။ စကားဝှက်စာဝှက်ခြင်းနှင့်စိစစ်အတည်ပြုခြင်းအသေးစိတ်ကို encapsuling:
$hash = password_hash($password, PASSWORD_DEFAULT); // ပုံမှန်အားဖြင့်အသုံးပြုခဲ့သည် bcrypt
if (password_verify($password, $hash)) {
echo "စကားဝှက်ကိုစစ်ဆေးခြင်းအောင်မြင်ခဲ့သည်";
}
ဤ interface တွင်ကောင်းမွန်သောလိုက်ဖက်မှုနှင့်လုံခြုံမှုရှိပြီးလုံခြုံမှုရှိပြီးလုံခြုံစိတ်ချရသော algorithm ကိုအလိုအလျောက်ရွေးချယ်နိုင်သည်။
Crypt () ကို တိုက်ရိုက်အသုံးပြုခြင်း၏ရှုပ်ထွေးမှုနှင့်လိုက်ဖက်တဲ့ပြ issues နာများကိုရှောင်ကြဉ်ပါ။
အနာဂတ်ဗားရှင်းများတွင်ဤဖြေရှင်းချက်ကို crypt () ကို တိုက်ရိုက်ခေါ်ဆိုမည့်အစားအကြံပြုသည်။
အောက်ပါဥပမာသည် crypt () ကို မတူညီသောဆားများဖြင့်မည်သို့ခေါ်ဆိုရမည်ကိုပြသပြီးစာဝှက်သောရလဒ်များတွင်ကွဲပြားခြားနားမှုများကိုဖော်ပြသည်။