လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ရလဒ်အနေဖြင့်မကိုက်ညီသောအရှည်၌ရလဒ်များနှင့်ဘာမှားသနည်း

ရလဒ်အနေဖြင့်မကိုက်ညီသောအရှည်၌ရလဒ်များနှင့်ဘာမှားသနည်း

M66 2025-05-20

PHP ၏ Crypt () function ကိုအသုံးပြုသောအခါ developer များစွာသည်ထူးဆန်းသောဖြစ်ရပ်တစ်ခုကိုသတိပြုမိကြလိမ့်မည်။ တစ်ခါတစ်ရံတွင်စာဝှက်ခြင်းရလဒ်သည်တစ်ခါတစ်ရံတွင်စာလုံး 13 လုံး, ဤရှေ့နောက်မညီမှုသည်ဤရှေ့နောက်မညီမှုသည်လူများကိုအလွယ်တကူမှားယွင်းစွာထင်မြင်နိုင်ပြီးကုဒ်သည်ကုဒ်များတွင်မှားယွင်းစွာစဉ်းစားမိသည်။ ဒီတော့ဘာဖြစ်နေတာလဲ

1 ။ Sendpt () function ကိုမိတ်ဆက်

PHP ၏ crypt () function သည် encapsulated encryption interface တစ်ခုဖြစ်ပြီးနောက်ခံအလွှာသည် operating system မှပေးထားသော encryption algorithm ပေါ်တွင်မူတည်သည်။ ဤလုပ်ဆောင်ချက်၏ပထမဆုံး pareter သည်စာဝှက်ရန် string ကိုနှင့်ဒုတိယ parameter သည် "ဆားဖြစ်သည်" ဖြစ်သည်။ ဤဆားသည်စာဝှက်ခြင်းရလဒ်များ၏ထူးခြားမှုကိုသက်ရောက်စေသည်။ သို့သော်မည်သည့် encryption algorithm ကိုအသုံးပြုသည်ကိုဆုံးဖြတ်သည်။

 echo crypt("mypassword", "salt");

အကယ်. သင်သည်ဆားငန်သောတန်ဖိုးများကိုမသုံးပါက PHP သည်အများအားဖြင့်အရိုးရာ des (data encryption standard) algorithm ကဲ့သို့သောအဟောင်းစာဝှက်စနစ်များကိုအလိုအလျောက်ပြန်ကျဆင်းလိမ့်မည်။

2 ။ ကွဲပြားခြားနားသောဆားတန်ဖိုးများကွဲပြားခြားနားသော encryption algorithms ကိုကိုယ်စားပြုသည်

အဆိုပါ crypt () function က algorithms မျိုးစုံကိုထောက်ခံပါတယ်နှင့်ကွဲပြားခြားနားသော algorithms ကွဲပြားခြားနားသော algorithms ဆားတန်ဖိုးကိုရှေ့ဆက်ကဆုံးဖြတ်သည်။ ဤတွင်အများသုံးဆားတန်ဖိုးပုံစံများနှင့်၎င်းတို့၏သက်ဆိုင်ရာစာဝှက်စနစ် algorithms:

algorithm Salt Value format ရလဒ်အရှည်
သံ ဇာတ်ကောင် 2 ယောက် စာလုံး 13 လုံး
MD5 $ 1 $ ... စာလုံးရေ 34 လုံး
လေ $ 2A $ ... / $ 2y $ ... ဇာတ်ကောင် 60
Sha-256 $ 5 $ ... စာလုံး 43 လုံး
Sha-512 $ 6 $ ... အက်ခရာ 86 လုံး

ဒါကြောင့်သင်ကရှေ့ဆက်ထားတဲ့ဆားတန်ဖိုးကိုအတိအလင်းမသွားဘူးဆိုရင်,

ဥပမာအားဖြင့်:

 // အသုံးပြု SHA-512 စာဝှက်ပယ်
echo crypt("mypassword", '$6$rounds=5000$usesomesillystring$');
// output နှင့်ဆင်တူသည်:$6$rounds=5000$usesomesill...(ခန့်မှန်းခြေအားဖြင့်စုစုပေါင်းအရှည်86)

နောက်ကုဒ်သည် default des des algorithm ကိုအသုံးပြုသည်။

 echo crypt("mypassword", 'sa');
// output နှင့်ဆင်တူသည်:sahGDf/YwKdl6(တခုတည်းသော, တဉီးတည်းသော13ဇာတ်ကောင်)

3 ။ ငါဘာလုပ်သင့်သလဲ

ဤပြ problem နာ ကို ရှောင် ရှား ရန် Salt တန်ဖိုးများကိုရှင်းလင်းပြတ်သားစွာရှေ့ဆက်များဖြင့်အမြဲတမ်းသုံးပါ, ထုတ်လုပ်ထားသောကျပန်းဆားများ,

သင်သည်ဤကဲ့သို့သောဆားတန်ဖိုးများကိုအလိုအလျောက်ထုတ်လုပ်နိုင်သည်။

 function generateSalt($algo = 'sha512') {
    switch ($algo) {
        case 'blowfish':
            return '$2y$10$' . substr(str_replace('+', '.', base64_encode(random_bytes(22))), 0, 22);
        case 'sha256':
            return '$5$' . bin2hex(random_bytes(6));
        case 'sha512':
        default:
            return '$6$' . bin2hex(random_bytes(6));
    }
}

$password = 'mypassword';
$salt = generateSalt('sha512');
$hash = crypt($password, $salt);

echo $hash;

IV ။ ဥပမာတစ်ခုအပြည့်အစုံ

 <?php
function hashPassword($password) {
    $salt = '$2y$10$' . substr(str_replace('+', '.', base64_encode(random_bytes(22))), 0, 22);
    return crypt($password, $salt);
}

$plainPassword = '123456';
$hashed = hashPassword($plainPassword);

// ဒေတာဘေ့စ်မှသိမ်းဆည်းထားယူဆ
file_put_contents('/var/www/m66.net/passwords.txt', $hashed . PHP_EOL);

// စကားဝှက်ကိုစစ်ဆေးပါ
$inputPassword = '123456';
$isValid = crypt($inputPassword, $hashed) === $hashed;
echo $isValid ? 'စကားဝှက်မှန်' : 'စကားဝှက်';
?>

5 ။ အကျဉ်းချုပ်

Vallopt () function ကိုအသုံးပြုသောအခါရလဒ်အမျိုးမျိုးအတွက်အခြေခံအကြောင်းရင်းမှာ "ဆားတန်ဖိုး" ပုံစံသည် encryption algorithm ကိုဆုံးဖြတ်သည်။ စာဝှက်စနစ်လုံခြုံရေးနှင့်ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန် -

  1. အမြဲတမ်းမှန်ကန်သော format / ဆားတန်ဖိုးကိုအတိအလင်းဖြတ်သွား ;

  2. ထိုကဲ့သို့သော $ 2Y $ သို့မဟုတ် $ 6 $ အဖြစ်ခေတ်သစ်, လုံခြုံသော algorithms ကိုရွေးပါ

  3. ပုံမှန်အပြုအမူသို့မဟုတ်တိုတောင်းသောဆားပုံစံများကိုအားမကိုးပါနှင့်

ဤအခြေခံအသေးစိတ်အချက်အလက်များကိုနားလည်ပြီးနောက်လျှို့ဝှက်လုံခြုံရေးအန္တရာယ်များကို password processing တွင်ရှောင်ရှားနိုင်ပြီးသင်၏ encryption logic ကိုပိုမိုထိန်းချုပ်နိုင်ပြီးယုံကြည်စိတ်ချရသော