PHP တွင် crypt () function သည် password သိုလှောင်မှုကဲ့သို့သောဖြစ်ရပ်များတွင်တွေ့ရလေ့ရှိသောတစ်လမ်းသွားစာဝှက်စနစ်အတွက် function တစ်ခုဖြစ်သည်။ ယခုအခါ Password_Hash () ကဲ့သို့သောခေတ်မီသောနည်းလမ်းများကိုပိုမိုအသုံးပြုရန်ပိုမိုလိုအပ်သော်လည်းယခုအခါ Crypt () ၏လုပ်ငန်းခွင် () အထူးသဖြင့်အယူအဆများကိုနားလည်ခြင်းသည် ပို. နားလည်သဘောပေါက်နေဆဲဖြစ်သည်။ ဤဆောင်းပါးသည်အခန်း ကဏ် fatch တွင်ပါ 0 င်သောအရည်အသွေးနှင့်လက်တွေ့သုံးခြင်းဥပမာများကိုအသေးစိတ်မိတ်ဆက်ပေးမည်။
SALL သည် စာဝှက်ထားသည့်အခါမူရင်းဒေတာများကိုအနှောင့်အယှက်ဖြစ်စေရန်စကားဝှက်တစ်ခုမတိုင်မီသို့မဟုတ်အပြီးထည့်သွင်းထားသည့် string တစ်ခုမှာလုံခြုံရေးတိုးတက်အောင်လုပ်ခြင်း, ရိုးရိုးလေးပြောရလျှင်ဆား၏လုပ်ဆောင်မှုမှာစာဝှက်ဖြင့်ကွဲပြားခြားနားသောရလဒ်များကိုရယူရန်အတွက်တူညီသောစကားဝှက်ကိုခွင့်ပြုရန်,
ဥပမာအားဖြင့်, အသုံးပြုသူများနှစ် ဦး ၏စကားဝှက်များသည် Password123 ဖြစ်သည်။ ကွဲပြားခြားနားသောဆားများထည့်ပြီးတာနဲ့စကားဝှက်တွေဟာအတူတူပါပဲတောင်စာဝှက်ထားတဲ့ရလဒ်တွေကလုံးဝကွဲပြားခြားနားလိမ့်မယ်။
PHP တွင် Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
crypt(string $string, string $salt): string
$ sting သည် plaintext password ကိုစာဝှက်ရန်နှင့် ဒေါ်လာဆားသည် encryption algorithm ၏ parameter ဖြစ်သည် (၎င်းသည်ဆားသာမကအယ်လ်ဂါလမ်ကိုအသုံးပြုသည်)
Crypt () သည် စာဝှက်စနစ် algorithms မျိုးစုံကိုထောက်ပံ့သည်။ မတူညီသော algorithms မှလိုအပ်သောဆားပုံစံသည်လည်းကွဲပြားခြားနားသည်။ ဤတွင်အများအားဖြင့် algorithms နှင့်သူတို့၏ဆားပုံစံများ
crypt('mypassword', 'rl');
ဆား - စာလုံးနှစ်လုံး (စုစုပေါင်း 12 bits)
အားနည်းချက်ကို encryption ကိုမထောက်ခံပါ
crypt('mypassword', '$1$abc12345$');
Salt Format - $ 1 $ 1-8 ဇာတ်ကောင်
Algorithm: MD5 ကိုအခြေခံသည်
ထုတ်လုပ်မှုအရှည်: 34 ဇာတ်ကောင်
crypt('mypassword', '$2y$10$usesomesillystring22$');
Salt Format: $ 2Y $ + 2-bit cost parameter + 22-biter + 22-basy base64 encoded ဆား
ကုန်ကျစရိတ် parameters တွေကို (အထက်ပါဥပမာ 10 တွင်ရှိသကဲ့သို့) စာဝှက်စနစ်ကိုထိန်းချုပ်ပါ
output ကိုအရှည်: 60 ဇာတ်ကောင်
crypt('mypassword', '$5$rounds=5000$abcdefgh$'); // SHA-256
crypt('mypassword', '$6$rounds=5000$abcdefgh$'); // SHA-512
ဆားပုံစံ - $ 5 $ $ 6 $ 6 $ 6 $ 6-16 ဇာတ်ကောင်ဆား
ကျည်များသည် ITERATE အရေအတွက်ကိုထိန်းချုပ်သည်, ပုံမှန်အားဖြင့် 5000 ဖြစ်သည်, လုံခြုံမှုတိုးမြှင့်နိုင်သည်
Crypt () ကို အမှန်တကယ် အသုံးပြု. ဆားကိုစိတ်ကြိုက်ပြုပြင်ခြင်းဥပမာတစ်ခုကိုကြည့်ကြစို့။
<?php
$password = 'securePass123';
$salt = '$2y$12$ABCDEFGHJKLMNPQRSTUVWX'; // Blowfish, 12 ပေးရ
$hash = crypt($password, $salt);
echo "စာဝှက်ထားတဲ့စကားဝှက်:$hash";
?>
encrypt လုပ်ထားသော output ကိုဤပုံစံဖြင့်ဖြစ်လိမ့်မည်။
$2y$12$ABCDEFGHJKLMNPQRSTUVWXrB92GhFIR77XRkThYs2D5cs1.GgZGq
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည်ကျပန်းမျိုးဆက်မျိုးဆက်သစ်ကိုပေါင်းစပ်ခြင်းဖြင့်ပိုမိုမြင့်မားသောလုံခြုံမှုကိုရရှိနိုင်ပါသည်။
<?php
function generateBlowfishSalt($cost = 12) {
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./';
$salt = '';
for ($i = 0; $i < 22; $i++) {
$salt .= $chars[random_int(0, 63)];
}
return sprintf('$2y$%02d$%s', $cost, $salt);
}
$password = 'MySecretPass!';
$salt = generateBlowfishSalt();
$hash = crypt($password, $salt);
echo "Salt: $salt\n";
echo "Hash: $hash\n";
?>
အသုံးပြုသူမှထည့်သွင်းထားသောစကားဝှက်သည်မှန်ကန်မှုရှိ, မရှိစစ်ဆေးရန်အသုံးပြုသူမှထည့်သွင်းထားသော Plaintext password ကို Datlet တန်ဖိုးကိုဆားအဖြစ်သိမ်းဆည်းရန်အသုံးပြုသင့်သည်။
<?php
$input = 'MySecretPass!';
$stored_hash = '$2y$12$ABCDEFGHJKLMNPQRSTUVWXrB92GhFIR77XRkThYs2D5cs1.GgZGq';
if (crypt($input, $stored_hash) === $stored_hash) {
echo "စကားဝှက်မှန်!";
} else {
echo "စကားဝှက်。";
}
?>
Password Token နှင့် link တစ်ခုနှင့် link တစ်ခုနှင့် link တစ်ခုနှင့်အတူ link တစ်ခုနှင့်အတူ redirect လုပ်လိုလျှင် URL ကိုအသုံးပြုလိုပါက M66.net ကဲ့သို့သောဒိုမိန်းအမည်ကိုသင်အသုံးပြုနိုင်သည်။
<?php
$token = crypt('user@example.com', generateBlowfishSalt());
$url = 'https://m66.net/reset-password?token=' . urlencode($token);
echo "link ကို reset:" . $url;
?>
ဤနည်းဖြင့်ဆောက်လုပ်ထားသော URL သည်တူညီသောအီးမေးလ်လိပ်စာတစ်ခုတည်းကိုတိုးပွားစေလိမ့်မည်မဟုတ်ကြောင်းသေချာစေလိမ့်မည်။
PHP ၏ Crypt () function တွင်ဆားသည် encryption parameter တစ်ခုမျှသာမဟုတ်ပါ, မှန်ကန်သော encryption algorithm format ကိုရွေးချယ်ပြီးဆားကိုမှန်ကန်စွာအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်စကားဝှက်သိုလှောင်မှု၏လုံခြုံရေးကိုများစွာတိုးတက်စေနိုင်သည်။ Modern Development_Hash () နှင့် password_verify ()) ကိုအသုံးပြုရန်အတွက်ပိုမိုအကြံပြုသော်လည်း crypt ၏ယန္တရားကိုနားလည်ရန်အကြံပြုသော်လည်းစာဝှက်စနစ်နောက်ကွယ်မှမူများနှင့်အန္တရာယ်ကာကွယ်စောင့်ရှောက်ရေးမဟာဗျူဟာများကိုနားလည်ရန်အထောက်အကူပြုနိုင်သည်။