PHP, crypt () နှင့် password_hash () တွင်စကားဝှက်စာဝှက်ခြင်းနှင့်ဆက်ဆံရာတွင်စကားဝှက်၏ hash value ကိုထုတ်လုပ်ရန်အသုံးပြုနိုင်သော်လည်း၎င်းလုပ်ဆောင်ချက်နှစ်ခုအကြားသိသာထင်ရှားသည့်ကွဲပြားခြားနားမှုများရှိသည်။ encryption fatch များကိုရွေးချယ်ခြင်းတွင်သူတို့၏သက်ဆိုင်ရာအခြေခံမူများနှင့်အားသာချက်များကိုနားလည်ခြင်းသည်လျှောက်လွှာ၏လုံခြုံရေးကိုသေချာစေရန်အလွန်အရေးကြီးသည်။
Crypt () သည် Unix စနစ်များသို့ပြန်လည်ခြေရာခံနိုင်သည့်ရှည်လျားသော encryption function ကိုဖြစ်သည်။ ၎င်းသည်သင်ပေးသည့်ဆားတန်ဖိုးပေါ် မူတည်. စာဝှက်စနစ်အယ်လ်ဂါလ်ithms (SHA-256, Sha-256, Sha-256, Sha-256) ကိုထောက်ပံ့သည်။
$password = 'mySecretPassword';
$salt = '$6$rounds=5000$anexamplesaltstring$'; // အသုံးပြု SHA-512
$hash = crypt($password, $salt);
ထုတ်လုပ်ထားသော ဒေါ်လာ hash သည် ပေးထားသောဆားပုံစံပေါ်တွင် အခြေခံ. encryption algorithm ကိုရွေးချယ်လိမ့်မည်။ ဤဥပမာတွင် Sha-512 ကိုအသုံးပြုသည်။
Password_Hash () PHP 5.5 ကတည်းကမိတ်ဆက်ပေးသည့်ခေတ်သစ်စကားဝှက် hash function ကိုဖြစ်သည်။ ၎င်းသည် bcrypt algorithm ကို default မှ အသုံးပြု. RAGON2I နှင့် ARGON2ID ကို ဗားရှင်းအသစ်များဖြင့်ထောက်ခံသည်။ ၎င်းသည်စကားဝှက်ကိုဆေးကြောရန်အတွက်ဒီဇိုင်းပြုလုပ်ထားပြီးဆားတန်ဖိုးများနှင့်ကုန်ကျစရိတ်ကိုအလိုအလျောက်စီမံသည်, လုံခြုံသော coding အားထုတ်မှုများကိုအလွန်ရိုးရှင်းစေသည်။
$password = 'mySecretPassword';
$hash = password_hash($password, PASSWORD_DEFAULT); // 默认အသုံးပြု bcrypt
ထုတ်လုပ်ပြီး ဒေါ်လာ hash သည် developer မှမလိုအပ်ဘဲ algorithm သတင်းအချက်အလက်, ကုန်ကျစရိတ်နှင့်ဆားပါ 0 င်သည့် string တစ်ခုဖြစ်သည်။
သီးခြားထင်ရှားသော | crypt () | Password_Hash () |
---|---|---|
ဆားတန်ဖိုးစီမံခန့်ခွဲမှု | ကိုယ်တိုင် developer အားဖြင့် set up ဖို့လိုအပ်ပါတယ် | အလိုအလျောက် generate |
algorithm | အမျိုးမျိုးသော, သတ်မှတ်ထားသောခံရဖို့လိုအပ်ပါတယ် | BCRYPT သည် BCRYPT , Argon2 ကို ထောက်ပံ့သည် |
လုံခွုံရေး | အကောင်အထည်ဖော်မှုနှင့် configuration အပေါ်မူတည်သည် | အကောင်းဆုံးအလေ့အကျင့်များအတိုင်းပုံမှန်အားဖြင့်လုံခြုံရေး |
အသုံးပြုရန်လွယ်ကူခြင်း | ရှုပ်ထွေးသော, အမှား - ကျရောက်နေတဲ့ | ရိုးရိုးရှင်းရှင်းသုံးရန်လွယ်ကူသည် |
အကြံပြုဒီဂရီ | စီမံကိန်းအသစ်များအတွက်မထောက်ခံပါ | အထူးအကြံပြုလိုပါသည် |
Password_Hash ( bcrypt and argon2 ကဲ့သို့သော passwords (bcrypt and argon2 ကဲ့သို့သော passwords) ဖြင့်အသုံးပြုသော algorithm ကိုဒီဇိုင်းပြုလုပ်ထားသည်။
Password_DEFAult အဆက်မပြတ်အသုံးပြုခြင်း PHP သည် code မပြောင်းလဲဘဲပိုမိုလုံခြုံသော algorithm သို့အလိုအလျောက်ပြောင်းနိုင်သည်။ ဥပမာအားဖြင့်:
$hash = password_hash($password, PASSWORD_DEFAULT);
PHP ၏ update ကိုဖြင့် PHOT_DEFAUTE သည် BCRYPT မှ argon2id သို့ပြောင်းခြင်းကဲ့သို့သောပိုမိုအားကောင်းသည့် algorithms ကိုအလိုအလျောက်လက်ခံလိမ့်မည်။
ဘာဖြစ်လို့လဲဆိုတော့ password_hash () ဆားတန်ဖိုးများနှင့်ကုန်ကျစရိတ်ကိုအလိုအလျောက်ကိုင်တွယ်သောကြောင့်လူ့တည်ဆောက်မှုအမှားအယွင်းများကြောင့်ဖြစ်သောလုံခြုံရေးပြ issues နာများကိုများစွာလျော့နည်းစေသည်။
အကယ်. သင်သည်အသုံးပြုသူ authentication system ကိုတည်ဆောက်နေပါက, ဥပမာအားဖြင့်အောက်ပါမှတ်ပုံတင်ခြင်းဆိုင်ရာ scripts ပုံစံများ -
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$password = $_POST['password'];
$hash = password_hash($password, PASSWORD_DEFAULT);
// ဒေတာဘေ့စမှသိမ်းဆည်းပါ
$conn = new PDO('mysql:host=localhost;dbname=example', 'user', 'pass');
$stmt = $conn->prepare('INSERT INTO users (username, password) VALUES (?, ?)');
$stmt->execute([$_POST['username'], $hash]);
header('Location: https://m66.net/login-success');
}
ဤကိစ္စတွင် Password_Hash () ကို အသုံးပြုခြင်းသည်သိသိသာသာပိုမိုလုံခြုံမှုရှိပြီးခေတ်မီသည်အလွန်ခေတ်မီပြီးခေတ်မီလုံခြုံမှုနှင့်ထိန်းသိမ်းခြင်းကိုကြာမြင့်စွာထိန်းသိမ်းထားနိုင်သည်။
Crypt () သည်အသုံးဝင်သော်လည်း လျှို့ဝှက်နံပါတ် (သို့) အသုံးပြုမှုလွယ်ကူခြင်းနှင့်အနာဂတ်ထိန်းသိမ်းမှု၏ရှုထောင့်မှကြည့်လျှင်ပိုမိုသင့်တော်သောရွေးချယ်မှုဖြစ်သည်။ အထူးသဖြင့်အသုံးပြုသူစကားဝှက်များကိုပြုပြင်မွမ်းမံထားသောအခြေအနေတွင် Password_Hash () အသုံးပြုသူ input ကိုအတည်ပြုရန်နှင့်ပိုမိုလုံခြုံသော PHP application တစ်ခုတည်ဆောက်ရန် password_verify () တွင်အသုံးပြုသင့်သည်။