လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> စကားဝှက်စာဝှက်ခြင်း algorithm ကိုအစားထိုးသောအခါ Password_needs_Rehash နှင့်ချောမွေ့သောအသွင်ကူးပြောင်းမှုကိုမည်သို့အောင်မြင်ရန်မည်သို့အောင်မြင်ရမည်နည်း။

စကားဝှက်စာဝှက်ခြင်း algorithm ကိုအစားထိုးသောအခါ Password_needs_Rehash နှင့်ချောမွေ့သောအသွင်ကူးပြောင်းမှုကိုမည်သို့အောင်မြင်ရန်မည်သို့အောင်မြင်ရမည်နည်း။

gitbox 2025-09-18

ခေတ်သစ်ဝက်ဘ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်အသုံးပြုသူစကားဝှက်များ၏လုံခြုံရေးကိုသေချာစေရန်အလွန်အရေးကြီးသည်။ နည်းပညာတိုးတက်မှုနှင့်အတူ encryption algorithms အသစ်သည်ဆက်လက်ပေါ်ထွက်လာပြီး Old algorithms ဟောင်းသည်အချိန်ကြာလာသည်နှင့်အမျှလုံခြုံမှုမရှိတော့ပါ။ ထို့ကြောင့် developer များသည်အသုံးပြုသူအတွေ့အကြုံကိုမထိခိုက်စေဘဲစကားဝှက်စာဝှက်စနစ် algorithms ကိုအစားထိုးရန်လိုအပ်သည်။ PHP PHP သည်စကားဝှက် စာ ဝှက်ခြင်း algorithms ကိုပိုမိုလွယ်ကူချောမွေ့စေရန်နှင့်ပိုမိုထိရောက်သောအကူးအပြောင်းကိုအကူးအပြောင်းစေသည်။

1 ။ Password_needs_Rehash () ?

Password_NEDS_REHAH () သည် PHP တွင်သိုလှောင်ထားသောစကားဝှက်ကိုပြန်လည်နေရာချထားရန်လိုအပ်သည်ကိုစစ်ဆေးရန် Built-in function ဖြစ်သည်။ ၎င်း၏ function သည်လက်ရှိသိုလှောင်ထားသောစကားဝှက် hash တန်ဖိုးသည်စကားဝှက်စာဝှက်စနစ် algorithm နှင့်ကိုက်ညီမှုရှိမရှိဆုံးဖြတ်ရန်ဖြစ်သည်။ ပုံမှန်အားဖြင့်စကားဝှက်စာဝှက်ခြင်း algorithm ပြောင်းလဲသွားသည့်အခါ developer များကအသုံးပြုသူသည်စကားဝှက်ကိုကိုယ်တိုင်ပြန်လည်စတင်ရန်မလိုဘဲအသုံးပြုသူ log ည့်သည်များအလိုအလျောက်မှတ်တမ်းတင်သောအခါ developer များသည် hash ကိုအလိုအလျောက်မွမ်းမံရန်ဤ function ကိုသုံးနိုင်သည်။

လုပ်ဆောင်ချက်ကိုအောက်ပါအတိုင်းသတ်မှတ်ထားသည်။

 <span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">password_needs_rehash</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$hash</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$algo</span></span><span> , </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$options</span></span><span> )
</span></span>

parameter သည်ရှင်းလင်းချက်:

  • $ hash : သိုလှောင်ထားသောစကားဝှက် hash တန်ဖိုး။

  • $ Algo : encryption algorithms အသစ် ( password_bcrypt , password_argon2 စသည်တို့) ။

  • $ ရွေးစရာများ - optional configuration option, များသောအားဖြင့် BCRYPT ကဲ့သို့သော algorithm configurations များပါ 0 င်သည့် array တစ်ခုအတွက်ကုန်ကျစရိတ်တစ်ခုအတွက်ကုန်ကျစရိတ်ဖြစ်သည်။

Value ကိုပြန်သွားပါ

စကားဝှက်ကို rehashed ရန်လိုအပ်ပါက Rehashed မလိုအပ်ပါက မှားယွင်း ပါ

2 ။ စကားဝှက်စာဝှက်ခြင်း algorithm ကိုပြောင်းလဲချိန်တွင် password_needs_Rehash () ကိုဘယ်လိုသုံးရမလဲ။

အဆင့် 1 - အသုံးပြုသူ log in လုပ်သည့်အခါစကားဝှက်ကိုစစ်ဆေးပါ

အသုံးပြုသူမှတ်တမ်းများ 0 င်ရောက်လာသောအခါအသုံးပြုသူမှထည့်သွင်းထားသောစကားဝှက်ကိုအတည်ပြုရန် encryption algorithm ကို ဦး စွာအသုံးပြုသည်။ ယခုအချိန်တွင်ကျွန်ုပ်တို့သည်သိုလှောင်ထားသောစကားဝှက် Hash ကိုပြန်လည်ဝှက်ထားရန်လိုအပ်, မလိုအပ်ကြောင်းကိုလည်းစစ်ဆေးရန်လိုအပ်သည်။ လိုအပ်ပါကစကားဝှက်ကို algorithm အသစ်ကို အသုံးပြု. စာဝှက်ပြီးဒေတာဘေ့စ်တွင် hash တန်ဖိုးကိုမွမ်းမံပါ။

အဆင့် 2 - စကားဝှက်ကိုပြန်လည်ဝှက်ထားရန်လိုအပ်ပါသလားစစ်ဆေးပါ

အသုံးပြုသူ၏စကားဝှက်ကိုအောင်မြင်စွာအတည်ပြုပြီးပါကလက်ရှိသိုလှောင်ထားသောစကားဝှက် Hash သည် encryption algorithm ၏လိုအပ်ချက်များနှင့်ကိုက်ညီမှုရှိမရှိဆုံးဖြတ်ရန် စကားဝှက်_needs_Rehash () function ကိုသုံးနိုင်သည်။ အကယ်. hash တန်ဖိုးကိုပြန်လည်ဝှက်ထားရန်လိုအပ်ပါက Hash ကိုစာဝှက်ရန်နှင့် update လုပ်ရန် algorithm အသစ်ကိုသုံးပါ။

Code Perfection:

ကျနော်တို့ password_bcrypt encryption algorithm ကိုအသုံးပြုခဲ့ကြပါစို့

 <span><span><span class="hljs-comment">// အသုံးပြုသူမှထည့်သွင်းထားသောစကားဝှက်ကိုရယူပါ</span></span><span>
</span><span><span class="hljs-variable">$user_input_password</span></span><span> = </span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'password'</span></span><span>];

</span><span><span class="hljs-comment">// ဒေတာဘေ့စ်မှသိုလှောင်ထားသော hash တန်ဖိုးကိုရယူပါ</span></span><span>
</span><span><span class="hljs-variable">$stored_hash</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getUserHashFromDatabase</span></span><span>(</span><span><span class="hljs-variable">$user_id</span></span><span>);

</span><span><span class="hljs-comment">// စာဝှက်စနစ်အယ်လ်နိုက်ဖာထစ်များကို အသုံးပြု. စကားဝှက်များကိုစစ်ဆေးပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">password_verify</span></span><span>(</span><span><span class="hljs-variable">$user_input_password</span></span><span>, </span><span><span class="hljs-variable">$stored_hash</span></span><span>)) {
    
    </span><span><span class="hljs-comment">// hash တန်ဖိုးကို re-encrypted ခံရဖို့လိုအပ်ပါက</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">password_needs_rehash</span></span><span>(</span><span><span class="hljs-variable">$stored_hash</span></span><span>, PASSWORD_ARGON2I, [</span><span><span class="hljs-string">'memory_cost'</span></span><span> =&gt; </span><span><span class="hljs-number">1</span></span><span> &lt;&lt; </span><span><span class="hljs-number">17</span></span><span>, </span><span><span class="hljs-string">'time_cost'</span></span><span> =&gt; </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-string">'threads'</span></span><span> =&gt; </span><span><span class="hljs-number">2</span></span><span>])) {
        
        </span><span><span class="hljs-comment">// စကားဝှက်များကို encryption algorithm ကို သုံး. စာဝှက်ပါ</span></span><span>
        </span><span><span class="hljs-variable">$new_hash</span></span><span> = </span><span><span class="hljs-title function_ invoke__">password_hash</span></span><span>(</span><span><span class="hljs-variable">$user_input_password</span></span><span>, PASSWORD_ARGON2I, [</span><span><span class="hljs-string">'memory_cost'</span></span><span> =&gt; </span><span><span class="hljs-number">1</span></span><span> &lt;&lt; </span><span><span class="hljs-number">17</span></span><span>, </span><span><span class="hljs-string">'time_cost'</span></span><span> =&gt; </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-string">'threads'</span></span><span> =&gt; </span><span><span class="hljs-number">2</span></span><span>]);
        
        </span><span><span class="hljs-comment">// ဒေတာဘေ့စ်တွင် hash တန်ဖိုးကို update လုပ်ပါ</span></span><span>
        </span><span><span class="hljs-title function_ invoke__">updateUserHashInDatabase</span></span><span>(</span><span><span class="hljs-variable">$user_id</span></span><span>, </span><span><span class="hljs-variable">$new_hash</span></span><span>);
    }

    </span><span><span class="hljs-comment">// အောင်မြင်စွာဝင်ပါ,သက်ဆိုင်ရာစစ်ဆင်ရေးလုပ်ဆောင်ပါ</span></span><span>
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"အောင်မြင်စွာဝင်ပါ!"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-comment">// စကားဝှက်</span></span><span>
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"စကားဝှက်!"</span></span><span>;
}
</span></span>

ကုဒ်ရှင်းပြချက်:

  • Password_verify () - အသုံးပြုသူမှထည့်သွင်းထားသောစကားဝှက်သည်သိုလှောင်ထားသော hash တန်ဖိုးနှင့်ကိုက်ညီကြောင်းအတည်ပြုရန်အသုံးပြုသည်။

  • Password_NEDS_REHAH () - စစ်ဆေးမှုအောင်မြင်ပြီးနောက်သိုလှောင်ထားသည့် hash သည် encryption algorithm အသစ်၏လိုအပ်ချက်များနှင့်ကိုက်ညီခြင်းရှိမရှိစစ်ဆေးပါ။ ပြန်လည်စာဝှက်ရန်လိုအပ်ပါကနောက်အဆင့်များကိုလိုက်နာပါ။

  • Password_Hash () - စာဝှက်စနစ် algorithm ကို သုံး. စကားဝှက်များကိုစာဝှက်ရန်အသုံးပြုသည်။

  • UpdateUSHARSHAWSHAWSHAWSHINTATABASE () - စကားဝှက်အသစ်ကိုဒေတာဘေ့စ်သို့သိမ်းဆည်းပါ။

3 ။ ချောမွေ့သောအသွင်ကူးပြောင်းမှု၏အကျိုးကျေးဇူးများ

စကားဝှက်စာဝှက်ခြင်း algorithm ကိုအစားထိုးရန်စကားဝှက် encryption algorithm ကိုအစားထိုးရန်အသုံးပြုသူသည်အသုံးပြုသူသည်တက်ကြွစွာ 0 င်ရောက်စွက်ဖက်ခြင်းမလိုအပ်ပါ။ ဤချဉ်းကပ်မှုသည်စကားဝှက်ကိုအလိုအလျောက်ဖြည့်ဆည်းပေးနိုင်သည်။

  1. Sheeamless အဆင့်မြှင့်တင်မှု - သုံးစွဲသူများသည်တစ်ချိန်က 0 င်ရန်သာလိုအပ်သည်။

  2. လုံခြုံရေးကိုတိုးတက်အောင်လုပ်ခြင်း - ပိုမိုလုံခြုံစိတ်ချရသော encryption algorithm သို့တဖြည်းဖြည်းချင်းကူးပြောင်းခြင်းအားဖြင့်စနစ်သည်လုံခြုံမှုကိုတိုးတက်စေပြီးခေတ်နောက်ကျနေသော algorithms အသုံးပြုခြင်းကြောင့်လုံခြုံရေးအားနည်းချက်များကိုရှောင်ရှားနိုင်သည်။

  3. ခိုင်မာသည့်လိုက်ဖက်မှု - စာဝှက်ခြင်း algorithm ကိုအစားထိုးစဉ်အတွင်း Old Hash Value သည်စနစ်ကိုနောက်ပြန်လိုက်ဖက်ခြင်းနှင့်မှတ်ပုံတင်ထားသောအသုံးပြုသူများကိုမထိခိုက်စေနိုင်ဆဲဖြစ်သည်။

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

Password encryption enryption algorithm ကိုအစားထိုးခြင်း algorithm သည်လုံခြုံရေးကိုမြှင့်တင်ရန်လိုအပ်သောအစီအမံများထဲမှတစ်ခုဖြစ်သည်။ PHP မှပေးသော philt_needs_Rehash () function သည် developer များက developer များအနေဖြင့် algorithms ဟောင်းမှ algorithms ဟောင်းများမှ algorithms အသစ်သို့ 0 င်ရောက်စွက်ဖက်ခြင်းမပြုပါနှင့်။ ဤနည်းအားဖြင့်အသုံးပြုသူ၏ login အတွေ့အကြုံကိုမထိခိုက်ပါ။