PHP တွင် Crypt () function သည်စကားဝှက်များကိုစာဝှက်ရန်ရိုးရာနည်းလမ်းဖြစ်သည်။ ၎င်းသည်စာဝှက်စနစ် algorithms မျိုးစုံကိုထောက်ပံ့ပေးပြီးကွဲပြားခြားနားသောပုံစံများဖြင့်ဆားတန်ဖိုးများကိုဖြတ်သန်းခြင်းအားဖြင့်တိကျသော encryption ယန္တရားများကိုအထောက်အကူပြုသည်။ ပိုမိုခေတ်မီသောစကားဝှက်ခန်းလျှော APIs (ဥပမာ password_hash () ) ကိုမကြာသေးမီနှစ်များအတွင်းအကြံပြုထားသော်လည်း Crypt () သည်အချို့သောစနစ်များတွင်ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုနေဆဲဖြစ်သည်။ ထို့ကြောင့်, crypt () function အတွက်သင့်လျော်သော algorithm နှင့်ဆားတန်ဖိုးပုံစံကိုမည်သို့ရွေးချယ်ရမည်ကိုနားလည်ခြင်းကိုနားလည်ခြင်းသည်လုံခြုံရေးနှင့်စနစ်သွယ်ဝိုက်မှုကိုသေချာစေရန်သော့ချက်ဖြစ်သည်။
Crypt () function သည်ဆားတန်ဖိုးရှေ့ဆက်ကိုခွဲခြားသတ်မှတ်ရန်အသုံးပြုသော algorithm ကိုအသုံးပြုသည်။ အောက်ပါတို့သည် Mainstream algorithms နှင့်၎င်းတို့၏သက်ဆိုင်ရာဆားတန်ဖိုးပုံစံများဖြစ်သည်။
des (ရိုးရာ algorithm)
Salt Value format: စာလုံး 2 လုံး (ဥပမာ - "XY")
လုံခြုံမှု - အလွန်နိမ့်ခြင်း,
MD5
Salt Value format - ဒေါ်လာ 1 ဒေါ်လာ အထိ $ 1 ဒေါ်လာအထိ (ဥပမာ - 1 ဒေါ်လာ ABC12345 )
လုံခြုံရေး - အားနည်းခြင်း,
လေ
Salt Value format: $ 2Y $ + 2-bit cost factor + 22-bit bate64 encoding (ဥပမာ - $ 2Y $ 10 $ 10 $ 10 $ 10 $ 10 $ 10 $ 10 $ 10 $ 10 $ 10 $ 10 $ 10 $ abcdefghghghghghghghghijklmnopqrstuu )
ဘေးကင်းလုံခြုံမှု - မြင့်မားသော, ကျယ်ပြန့်အသုံးပြုခဲ့သည်။
သဟဇာတ - $ 2A $ အစား $ 2Y $ အစား $ 2Y $ သုံးရန်အကြံပြုသည်။
Sha-256 နှင့် Sha-512 (Glibc)
Salt Value format:
Sha-256: $ 5 $ + optional + parameter + Salt (ဥပမာ - $ 5 $ 5000 = 5000 $ Myaltalue )
Sha-512: $ 6 $ + optional + parameter + ဆား (ဥပမာ - $ 6 $ myaltalue )
လုံခြုံမှု - မြင့်မားသော
သဟဇာတ - Glibc မှပံ့ပိုးသောပလက်ဖောင်းများတွင် (ဥပမာ - Linux Systems) ကဲ့သို့သောပလက်ဖောင်းများတွင်ရနိုင်သည်။
encryption algorithm တစ်ခုကိုရွေးချယ်ရာတွင်အောက်ပါအချက်များကိုထည့်သွင်းစဉ်းစားသင့်သည် -
လုံခြုံရေးလိုအပ်ချက်များ - အကယ် . စနစ်သည်ခေတ်သစ်ဟာ့ဒ်ဝဲမှ cracking cracking cracking cracking ကိုခုခံတွန်းလှန်ရန်လိုအပ်ပါက ,
Cross-platform compatibility : အကယ်. system ကို Linux နှင့် Windows အကြားပြောင်းရွှေ့ရန်လိုအပ်ပါက Sha Variant သည် Windows တွင်မကိုက်ညီသောကြောင့်,
တွက်ချက်မှုကုန်ကျစရိတ်ထိန်းချုပ်မှု - Blowish သည်ကုန်ကျစရိတ် parameters များကို (2-31) ကိုထောက်ပံ့ပေးပြီးဆာဗာစွမ်းဆောင်ရည်အရချိန်ညှိနိုင်သည်။ ဥပမာအားဖြင့်, $ 2Y $ 12 $ $ 2 ^ 12 ကြားခံဆိုလိုသည်။
Salt Value သည်တူညီသောစကားဝှက်ကိုအတူတူပင် hash ကိုထုတ်လုပ်ခြင်းမှကာကွယ်ရန်အသုံးပြုသည်။ ထို့ကြောင့်အောက်ပါလက္ခဏာများမှာ -
UNIQUIcess - သုံးစွဲသူရဲ့စကားဝှက်တစ်ခုစီဟာမတူညီတဲ့ဆားကိုသုံးသင့်တယ်။
ခန့်မှန်းရခက်ခြင်း - လုံခြုံသော Pseudo-dription source ကို အသုံးပြု. ဆားကိုထုတ်လုပ်သင့်သည်။
SHALL SALL နှင့်အတူ hash ထုတ်လုပ်ရန် Blowfish ကို အသုံးပြု. နမူနာကုဒ်
function generateSalt($cost = 10) {
$salt = substr(strtr(base64_encode(random_bytes(16)), '+', '.'), 0, 22);
return sprintf('$2y$%02d$%s$', $cost, $salt);
}
$password = 'MySecurePassword123';
$salt = generateSalt(12);
$hash = crypt($password, $salt);
echo "စာဝှက်ထားတဲ့စကားဝှက်က: " . $hash;
စကားဝှက်ကိုစစ်ဆေးခြင်းအတွက် crypt () ကို အသုံးပြုသောအခါအသုံးပြုသူအားထည့်သွင်းမှုကိုမူလ hash နှင့်အတူ crypt () ကိုဖြတ်သန်းသင့်သည်။
function verifyPassword($password, $hash) {
return crypt($password, $hash) === $hash;
}
ဤအချက်သည်စိစစ်အတည်ပြုခြင်းလုပ်ငန်းစဉ်သည် algorithm နှင့်ဆားတန်ဖိုးများကိုအသုံးပြုသည်။
လက်မခံနိုင်သောဆားတန်ဖိုးများဖြင့်ကြိုးများကိုကိုယ်တိုင်မသတ်မှတ်ပါနှင့် , ပရိုဂရမ်မှအလိုအလျောက်ထုတ်ပေးသောလုံခြုံသောဆားတန်ဖိုးများကိုသုံးပါ။
Des သို့မဟုတ် MD5 ကိုသူတို့ပံ့ပိုးရှိနေသေးရင်တောင်မှရှောင်ကြဉ်ပါ ။
password_hash () နှင့် password_verify ()) သို့ ဦး စားပေးရန် ()) သို့ပြောင်းရွှေ့ခြင်း () တွင်ဤလုပ်ဆောင်ချက်များကို PHP မှထိန်းသိမ်းထားပြီးခေတ်မီတိုက်ခိုက်မှုများကိုပိုမိုကောင်းမွန်စွာခုခံတွန်းလှန်နိုင်သည့် algorithms နှင့်ဆားတန်ဖိုးများကိုအလိုအလျောက်ကိုင်တွယ်သည်။
အသုံးပြုသူတစ် ဦး မှတ်ပုံတင်သည့်အခါစနစ်စနစ်အဟောင်းသည်စကားဝှက်ကိုသိမ်းဆည်းသည်။
$password = $_POST['password'];
$salt = generateSalt(12);
$hashed = crypt($password, $salt);
// သိုထား $hashed ဒေတာဘေ့စကိုသွားပါ
logging လုပ်တဲ့အခါစကားဝှက်ကိုစစ်ဆေးပါ။
$input = $_POST['password'];
$stored_hash = getPasswordFromDatabase(); // ဒါကြောင့်ဒေတာဘေ့စကနေထုတ်ယူခဲ့တာယူဆ
if (verifyPassword($input, $stored_hash)) {
echo "အောင်မြင်စွာဝင်ပါ";
} else {
echo "စကားဝှက်";
}
crypt () function သည်ခေတ်သစ် PHP တွင် ဦး စားပေးကိရိယာမရှိတော့ပေမဲ့အထူးသဖြင့်စနစ်ဟောင်းများကိုထိန်းသိမ်းထားသည့်အခါ၎င်း၏ algorithms နှင့်ဆားတန်ဖိုးယန္တရားများကိုနားလည်ရန်အရေးကြီးသည်။ သဟဇာတနှင့်လုံခြုံမှုအကြားမျှတမှုကိုသေချာစေရန်လုံခြုံအောင်လုပ်ထားသောဆားတန်ဖိုးများကိုလုံခြုံစွာထုတ်လုပ်သောဆားတန်ဖိုးများနှင့်အတူ algorithm ကိုသုံးရန်အကြံပြုသည် ။ ရေရှည်တွင်စနစ်ကို password_hash () ကိုကူးပြောင်းရန်လည်းအကြံပြုပါသည်။