ဤဆောင်းပါးသည် PHP တွင် Hash functions များကိုနားလည်သဘောပေါက်ရန်နှင့်မှန်ကန်စွာကျင့်သုံးလိုသော developer များအတွက်ဖြစ်သည်။ PISP တွင်အခြေခံမူများ, ရလဒ်များ, ရှာဖွေခြင်း, အမြန်နှုန်း, ပုံမှန်အသုံးပြုမှုနှင့်လက်တွေ့ကျတဲ့အသုံးပြုမှုနှင့်လက်တွေ့ကျသောအသုံးပြုမှုနှင့်လက်တွေ့ကျသောအသုံးပြုမှုများမှရှင်းလင်းပြတ်သားစွာနှင့်လက်တွေ့ကျသောအကြံပြုချက်များပေးရန် MD5 နှင့် Sha-1 ကိုနှိုင်းယှဉ်ပါမည်။
Hash (Hash) function ကို - မည်သည့်အရှည်မဆို၏အကြောင်းကိုလက်ခံပြီး fixed အရှည်၏ "အကျဉ်းချုပ်" ထုတ်ပေးသည်။ ဒေတာသမာဓိရှိမှုကိုအတည်ပြုရန်မကြာခဏအသုံးပြုသည်, လက်မှတ်ရေးထိုးခြင်း,
Irectionaby : hash functions များသည်တစ် ဦး တည်းသောလမ်းစဉ်ဖြစ်သင့်သည်။ မူလ input ကိုအကျဉ်းချုပ်မှမထုတ်ယူနိုင်ပါ။
တိုက်မှု - မတူညီသောသွင်းအားစုများသည်တူညီသော output ကိုထုတ်လုပ်သည့်အမှုတစ်ခု။ စံပြ hash သည်တိုက်မှုကိုရှာဖွေရန်ခက်ခဲသင့်သည်။
output ကိုအရှည်
MD5: 128 bits, usually expressed in 32-character hexadecimal (such as d41d8cd98f00b204e9800998ecf8427e ).
Sha-1: 160 bits သည်များသောအားဖြင့် Hexadecimal စာလုံး 40 ဖြင့်ဖော်ပြလေ့ရှိသည် ။
လုံခြုံရေး (စိတ်တဇ)
MD5 - လက်တွေ့ကျပြီးဖြစ်နိုင်ခြေရှိသောတိုက်မှုတိုက်ခိုက်မှုများပြုလုပ်ရန်သက်သေပြခဲ့ပြီးလုံခြုံရေး - အထိခိုက်မခံမှုများ, လက်မှတ်များ, စကားဝှက်သိုလှောင်မှုစသည်ဖြင့်အသုံးမပြုနိုင်ပါ။
Sha-1: MD5 ထက်ပိုမိုအားကောင်းသော်လည်းပင်ကိုယ်ပင်ကိုယ်ပင်ပန်းနွမ်းနယ် (တိုက်ခြင်းများရှာဖွေခြင်းကိုရှာဖွေခြင်း,
အရှိန်
MD5 သည်ပုံမှန်အားဖြင့် Sha-1 ထက်ပိုမိုမြန်ဆန်သည် (ပြည်တွင်းပြည်နယ်နှင့်တွက်ချက်မှုနည်းပါးလာခြင်းနှင့်အတိုးအကျယ်ထက်နည်းသောပမာဏ) ဖြစ်သော်လည်းမြန်နှုန်းကွာခြားချက်မှာခေတ်သစ်ဟာ့ဒ်ဝဲတွင်အဓိကထည့်သွင်းစဉ်းစားခြင်းမဟုတ်ပါ - လုံခြုံရေးက ပို. အရေးကြီးသည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-string">"hello world"</span></span><span>;
</span><span><span class="hljs-comment">// MD5</span></span><span>
</span><span><span class="hljs-variable">$md5</span></span><span> = </span><span><span class="hljs-title function_ invoke__">md5</span></span><span>(</span><span><span class="hljs-variable">$data</span></span><span>); </span><span><span class="hljs-comment">// 32 hex</span></span><span>
</span><span><span class="hljs-variable">$md5_raw</span></span><span> = </span><span><span class="hljs-title function_ invoke__">md5</span></span><span>(</span><span><span class="hljs-variable">$data</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>); </span><span><span class="hljs-comment">// မူရင်း binary 16 ဒရယ်</span></span><span>
</span><span><span class="hljs-comment">// SHA-1</span></span><span>
</span><span><span class="hljs-variable">$sha1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">sha1</span></span><span>(</span><span><span class="hljs-variable">$data</span></span><span>); </span><span><span class="hljs-comment">// 40 hex</span></span><span>
</span><span><span class="hljs-variable">$sha1_raw</span></span><span> = </span><span><span class="hljs-title function_ invoke__">sha1</span></span><span>(</span><span><span class="hljs-variable">$data</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>); </span><span><span class="hljs-comment">// မူရင်း binary 20 ဒရယ်</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"MD5: <span class="hljs-subst">$md5</span></span></span><span>\n";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"SHA1: <span class="hljs-subst">$sha1</span></span></span><span>\n";
</span></span>သော့ချက်များလိုအပ်သည့်မက်ဆေ့ခ်ျ authentication (ပိုမိုလုံခြုံသောသမာဓိစစ်ဆေးခြင်း) အတွက် HMAC ကိုသုံးပါ။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$key</span></span><span> = </span><span><span class="hljs-string">"secret-key"</span></span><span>;
</span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-string">"important payload"</span></span><span>;
</span><span><span class="hljs-comment">// ကြာကြာနှင့်ပိုမိုလုံခြုံ hash ကိုအသုံးပြုရန်အကြံပြုခဲ့သည်(နမူနာ:sha256)</span></span><span>
</span><span><span class="hljs-variable">$hmac</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hash_hmac</span></span><span>(</span><span><span class="hljs-string">'sha256'</span></span><span>, </span><span><span class="hljs-variable">$data</span></span><span>, </span><span><span class="hljs-variable">$key</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"HMAC-SHA256: <span class="hljs-subst">$hmac</span></span></span><span>\n";
</span></span>လုံခြုံရေး Non-Non-Destification / Fast Verification (အန္တရာယ်များကိုလက်ခံနိုင်ဖွယ်ရှိသည်)
MD5 သို့မဟုတ် Sha-1 နှစ်ခုစလုံးကို hash, ရိုးရှင်းသော cache keys များကိုထုတ်လုပ်ရန်နှင့် Deparplication ၏လျင်မြန်သောတရားစီရင်ခြင်းကိုပြုလုပ်ရန်အသုံးပြုနိုင်သည်။
လုံခြုံစိတ်ချရသောနှင့်အထိခိုက်မခံသည့်အခြေအနေများအတွက်အသုံးပြုသည် (လုံးဝမထောက်ခံပါ)
စကားဝှက်သိုလှောင်ခြင်း, ဒီဂျစ်တယ်လက်မှတ်, Tls / Certificate Fingerprint, MD5 / Sha-1 ကိုမသုံးပါနှင့် ။ နှစ် ဦး စလုံးသည်လက်တွေ့ကျတဲ့တိုက်မှုတိုက်ခိုက်မှု (အထူးသဖြင့် MD5) ရှိပြီးတိုက်ခိုက်သူသည်တူညီသောစာစောင်မှမတူညီသောသတင်းစကားများကိုရှာဖွေနိုင်သည်။
ဖိုင်ပေါင်းစည်းမှုအတည်ပြုချက်ဖိုင်
ထုတ်လွှင့်ခြင်းတွင်မတော်တဆအကျင့်ပျက်ခြစားမှုကိုတားဆီးရန်သာလျှင် MD5 / Sha-1 သည် file download စာမျက်နှာတွင်ပုံမှန်အတိုင်းဖြစ်လေ့ရှိသည်။ သို့သော်သင်သည်အန္တရာယ်ရှိသောနှောင့်နှေးမှုကိုစိုးရိမ်နေပါကပိုမိုကောင်းမွန်သော Hash (Sha-256/512) သို့မဟုတ်လက်မှတ် (HMAC / Public Key နှင့် Private Key Signature) ကိုသုံးပါ။
MD5 - 2000 ပြည့်လွန်နှစ်များအစောပိုင်းကတည်းကတိုက်မှုတိုက်ခိုက်မှုများနှင့်လက်တွေ့ကျသောတိုက်ခိုက်မှုများများစွာရှိခဲ့ပြီးလုံခြုံရေးရည်ရွယ်ချက်များအတွက်ကျယ်ကျယ်ပြန့်ပြန့်ကန့်ကွက်ထားခြင်းဖြစ်သည်။
Sha-1 : MD5 ထက်ပိုမိုလုံခြုံသည်ဟုယူဆရသော်,
(မှတ်ချက် - အထက်ဖော်ပြပါအချက်သည်ခြုံငုံသုံးသပ်ချက်ဖြစ်သည်။ ထုတ်ဝေသောသုတေသနနှင့်အင်ဂျင်နီယာအလေ့အကျင့်ကနှစ်ခုသည်တိုက်မှုကိုခုခံတွန်းလှန်ရန်မလုံလောက်ကြောင်းဖော်ပြသည်။ )
စကားဝှက်များအမြဲတမ်းအထူးလျှို့ဝှက်နံပါတ် Hash function များကိုအမြဲတမ်းအသုံးပြုသည် ။ Philver_Hash ( Philver_verify () PHP default (password_default) ကိုအသုံးပြုသည် ( Password_Default ) ကိုအသုံးပြုသည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// စကားဝှက်ကိုဆေးထည့်ခြင်းနှင့်စိစစ်အတည်ပြု(နမူနာ)</span></span><span>
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">'user-password'</span></span><span>;
</span><span><span class="hljs-variable">$hash</span></span><span> = </span><span><span class="hljs-title function_ invoke__">password_hash</span></span><span>(</span><span><span class="hljs-variable">$password</span></span><span>, PASSWORD_DEFAULT);
</span><span><span class="hljs-comment">// ကုန်လေှာင်ရုံ $hash ဒေတာဘေ့စကိုသွားပါ</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">$password</span></span><span>, </span><span><span class="hljs-variable">$hash</span></span><span>)) {
</span><span><span class="hljs-comment">// အတည်ပြုအတည်ပြု</span></span><span>
}
</span></span>မက်ဆေ့ခ်ျသမာဓိစောင့်သိမှုနှင့်စစ်မှန်ကြောင်းအထောက်အထားပြသခြင်းကို HMAC သို့မဟုတ်လက်မှတ်ဖြင့်အသုံးပြုသည် ။ Hamh_hmac (ဥပမာ, Sha256 သို့မဟုတ် Sha256 သို့မဟုတ် Sha256 သို့မဟုတ် Sha512 ) ကိုသုံးပါသို့မဟုတ် Publicslsl_Sign Sncature ကိုသုံးပါ။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$tag</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hash_hmac</span></span><span>(</span><span><span class="hljs-string">'sha256'</span></span><span>, </span><span><span class="hljs-variable">$message</span></span><span>, </span><span><span class="hljs-variable">$secret_key</span></span><span>);
</span></span>ယေဘုယျအားဖြင့် Sha-2 သို့မဟုတ် Sha-3 စီးရီးများကို Hash ( ' Sha256 ', $ ဒေတာ) သို့မဟုတ် Hash ('Sha512', $ ဒေတာ) သို့မဟုတ် Hash ('Sha512' , ၎င်းတို့သည် MD5 / Sha-1 ထက်သိသိသာသာပိုမိုကောင်းမွန်သည်။
binary ကိုပိုမိုထိရောက်စွာလုပ်ဆောင်ရန်လိုအပ်ပါကမူရင်း binary output ကိုသုံးနိုင်သည် ( MD5 ($ ဒေတာ, စစ်မှန်သော) / sha1 ($ ဒေတာ, စစ်မှန်သော) ) နှင့်ရလဒ်များကိုထုတ်လွှင့်သည်။
သင်၏ကိုယ်ပိုင်စကားဝှက်ခန်းလျှောအစီအစဉ်ကို "ဆား + မျိုးစုံ hashings များကို အသုံးပြု. " ဖန်တီးရန်မကြိုးစားပါနှင့် - အမှားအယွင်းများသည်ပြုပြင်ထိန်းသိမ်းမှုများပြုလုပ်နေသည်။ ကျေးဇူးပြု. ဘာသာစကား / မူဘောင်မှအကြံပြုထားသောစကားဝှက် hash API ကိုသုံးပါ။
output length: MD5 = 128 bits (32 hex), Sha-1 = 160 bits (40 hex) ။
လုံခြုံရေး - Sha-1> MD5, သို့သော်လုံခြုံစိတ်ချရသောအရေးကြီးသောအခြေအနေများအတွက်လည်းမသင့်တော်ပါ။
မြန်နှုန်း: MD5 သည်အနည်းငယ်ပိုမိုမြန်ဆန်သည်, သို့သော်ခြားနားချက်သည်ရွေးချယ်မှုစံ (လုံခြုံမှုဆိုင်ရာသတ်မှတ်ချက်များ) မဖြစ်သင့်ပါ။
အကြံပြုထားသည့်ရည်ရွယ်ချက် - လုံခြုံစိတ်ချရသောထူးခြားသောဖော်ထုတ်ခြင်းသို့မဟုတ်သဟဇာတဖြစ်ဖွယ်ရှိသည့်ကွဲပြားခြားနားမှုများအတွက်သာ, ကျေးဇူးပြု. လုံခြုံသောရည်ရွယ်ချက်များအတွက် Sha-2 / Sha-3 / HMAC / Password_Hash ကိုသုံးပါ။
အကယ်. သင်သည်ကုဒ်အသစ်ကိုရေးနေပြီးလုံခြုံရေးအတွက်စိုးရိမ်ပူပန်နေပါက MD5 သို့မဟုတ် Sha-1 - SHA-1 - SHA-1 ကိုအသုံးပြုပါ။ HASH (Sha256 ', $ ဒေတာ) / hash (sha256) / hash (sha256', $ data, $ data, $ data, $ data, $ data, $ data, $ data, $ data, $ data , $ data) MD5 / Sha-1 တွင်သမိုင်းဆိုင်ရာစနစ်များနှင့်လိုက်ဖက်သောအခြေအနေများသို့မဟုတ်လုံခြုံရေးနှင့်မသက်ဆိုင်ပါ။