PHP crypt() လုပ်ဆောင်ချက်
❮ PHP String အကိုးအကား
အဓိပ္ပါယ်နှင့် အသုံးပြုမှု
crypt() လုပ်ဆောင်ချက်သည် DES၊ Blowfish သို့မဟုတ် MD5 algorithms ကို အသုံးပြု၍ hashed string တစ်ခုကို ပြန်ပေးသည်။
ဤလုပ်ဆောင်ချက်သည် မတူညီသော လည်ပတ်မှုစနစ်များတွင် ကွဲပြားသည်။ PHP သည် မည်သည့် algorithms များရရှိနိုင်ပြီး မည်သည့် algorithms ကို ထည့်သွင်းသည့်အခါ အသုံးပြုရမည်ကို စစ်ဆေးပါသည်။
ဆားသတ်မှတ်ချက်သည် စိတ်ကြိုက်ရွေးချယ်နိုင်သည်။ သို့သော်၊ crypt() သည် ဆားမပါဘဲ အားနည်းသော စကားဝှက်ကို ဖန်တီးသည်။ ပိုမိုကောင်းမွန်သော လုံခြုံရေးအတွက် လုံလောက်သော ခိုင်ခံ့သောဆားကို သေချာသတ်မှတ်ပါ။
crypt() function နဲ့တွဲသုံးတဲ့ constants တွေရှိပါတယ်။ ထည့်သွင်းသောအခါတွင် ဤကိန်းသေများ၏တန်ဖိုးကို PHP မှသတ်မှတ်သည်။
ကိန်းသေများ-
- [CRYPT_STD_DES] - "./0-9A-Za-z" အက္ခရာမှ အက္ခရာဆား နှစ်လုံးပါသည့် Standard DES အခြေပြု hash။ ဆားတွင် မမှန်ကန်သော စာလုံးများကို အသုံးပြုခြင်းသည် ဤလုပ်ဆောင်ချက်ကို ပျက်ကွက်စေမည်ဖြစ်သည်။
- [CRYPT_EXT_DES] - အက္ခရာကိုးလုံးပါရှိသော ဆားဖြင့် တိုးချဲ့ထားသော DES အခြေခံ hash နှင့် နောက်တွင် အထပ်ပေါင်း 4 bytes နှင့် ဆား 4 bytes တို့ဖြင့် အောက်တန်းကျသည်။ ၎င်းတို့ကို ပုံနှိပ်နိုင်သော အက္ခရာများအဖြစ် ကုဒ်နံပါတ်၊ အက္ခရာတစ်ခုလျှင် 6 bits၊ အနည်းဆုံး သိသာထင်ရှားသော အက္ခရာများကို ဦးစွာ ကုဒ်လုပ်ထားပါသည်။ 0 မှ 63 တန်ဖိုးများကို "./0-9A-Za-z" အဖြစ် ကုဒ်လုပ်ထားသည်။ ဆားတွင် မမှန်ကန်သော စာလုံးများကို အသုံးပြုခြင်းသည် လုပ်ဆောင်ချက်ကို ပျက်ကွက်စေသည်။
- [CRYPT_MD5] - $1$ မှ စတင်သည့် ဆား 12 လုံးဖြင့် MD5 ကို ပေါင်းထားသည်။
- [CRYPT_BLOWFISH] - $2a$၊ $2x$ သို့မဟုတ် $2y$၊ ဂဏန်းနှစ်လုံးတန်ဖိုးသတ်မှတ်ချက် "$" နှင့် အက္ခရာ "./0-9A-Za-z" တို့မှ စာလုံး 22 လုံးဖြင့် စတင်ဆားဖြင့် Blowfish ဖြင့် နှပ်ထားသော Blowfish . အက္ခရာ၏အပြင်ဘက်ရှိ ဇာတ်ကောင်များကို အသုံးပြုခြင်းဖြင့် ဤလုပ်ဆောင်ချက်သည် သုညအလျား စာကြောင်းကို ပြန်ဖြစ်စေသည်။ "$" ပါရာမီတာသည် အရင်းခံ Blowfish-bashed hashing algorithm အတွက် ထပ်လောင်းရေတွက်ခြင်း၏ အခြေခံ-2 လော့ဂရစ်သမ်ဖြစ်ပြီး အပိုင်းအခြား 04-31 အတွင်း ဖြစ်ရပါမည်။ ဤဘောင်အပြင်ဘက်ရှိ တန်ဖိုးများသည် လုပ်ဆောင်ချက်ကို ပျက်ကွက်စေမည်ဖြစ်သည်။
- [CRYPT_SHA_256] - $5$ မှစတင်၍ ဆား 16 လုံးပါသော SHA-256 hash ဆားစာကြောင်းသည် "rounds=<N>$" ဖြင့် စတင်ပါက၊ N ၏ ဂဏန်းတန်ဖိုးကို Blowfish ရှိ ကုန်ကျစရိတ် ကန့်သတ်ချက်ကဲ့သို့ ကိန်းဂဏာန်းအကြိမ်အရေအတွက် မည်မျှလုပ်ဆောင်သင့်သည်ကို ညွှန်ပြရန်အတွက် အသုံးပြုသည်။ ပုံသေ အကြိမ်အရေအတွက်သည် 5000 ဖြစ်ပြီး အနည်းဆုံး 1000 နှင့် အများဆုံး 999,999,999 ရှိသည်။ ဤအပိုင်းအခြားပြင်ပရှိ N ၏ရွေးချယ်မှုမှန်သမျှကို အနီးဆုံးကန့်သတ်ချက်သို့ ဖြတ်တောက်မည်ဖြစ်သည်။
- [CRYPT_SHA_512] - $6$ မှစတင်၍ ဆား 16 လုံးပါသော SHA-512 hash ဆားစာကြောင်းသည် "rounds=<N>$" ဖြင့် စတင်ပါက၊ N ၏ ဂဏန်းတန်ဖိုးကို Blowfish ရှိ ကုန်ကျစရိတ် ကန့်သတ်ချက်ကဲ့သို့ ကိန်းဂဏာန်းအကြိမ်အရေအတွက် မည်မျှလုပ်ဆောင်သင့်သည်ကို ညွှန်ပြရန်အတွက် အသုံးပြုသည်။ ပုံသေ အကြိမ်အရေအတွက်သည် 5000 ဖြစ်ပြီး အနည်းဆုံး 1000 နှင့် အများဆုံး 999,999,999 ရှိသည်။ ဤအပိုင်းအခြားပြင်ပရှိ N ၏ရွေးချယ်မှုမှန်သမျှကို အနီးဆုံးကန့်သတ်ချက်သို့ ဖြတ်တောက်မည်ဖြစ်သည်။
ဤလုပ်ဆောင်ချက်အများအပြား algorithms ကိုပံ့ပိုးပေးသည့်စနစ်များတွင်၊ အထက်ဖော်ပြပါကိန်းသေများကို ပံ့ပိုးထားပါက "1" နှင့် အခြားနည်းဖြင့် "0" ဟုသတ်မှတ်ထားသည်။
မှတ်ချက်- စာဝှက်စနစ် မရှိပါ။ crypt() function သည် one-way algorithm ကိုအသုံးပြုသည်။
အထားအသို
crypt(str,salt)
ကန့်သတ်တန်ဖိုးများ
Parameter | Description |
---|---|
str | Required. Specifies the string to be hashed |
salt | Optional. A salt string to base the hashing on |
နည်းပညာဆိုင်ရာအသေးစိတ်
ပြန်ပို့တန်ဖိုး- | ကုဒ်သွင်းထားသော စာကြောင်း သို့မဟုတ် စာလုံး 13 လုံးထက် ပိုတိုသော စာကြောင်းကို ပြန်ပေးကာ ပျက်ကွက်မှုတွင် ဆားနှင့် ကွဲပြားကြောင်း အာမခံသည် |
---|---|
PHP ဗားရှင်း- | 4+ |
ပြောင်းလဲမှုမှတ်တမ်း- | PHP 5.6.0 - ဆား ကို ချန်လှပ်ထား လျှင် E_NOTICE လုံခြုံရေးသတိပေးချက်ကို ပြ သသည်။ PHP 5.3.7 - $2x$ နှင့် $2y$ Blowfish မုဒ်များကို ထည့်ထားသည်။ PHP 5.3.2 - SHA-256 နှင့် SHA-512 ကို ထည့်ထားသည်။ မမှန်ကန်သော အလှည့်များတွင် ပြုပြင်ထားသော Blowfish အပြုအမူသည် DES သို့ ပြန်ကျသွားမည့်အစား "ပျက်ကွက်" စာကြောင်း ("*0" သို့မဟုတ် "*1") ကို ပြန်ပေးသည်။ PHP 5.3.0 - ယခု PHP တွင် MD5 crypt၊ Standard DES၊ Extended DES နှင့် Blowfish အယ်လဂိုရီသမ်များအတွက် ၎င်း၏ကိုယ်ပိုင်အကောင်အထည်ဖော်မှုပါရှိပြီး algorithms တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသောစနစ်အတွက် ပံ့ပိုးမှုမရှိပါက ၎င်းကိုအသုံးပြုမည်ဖြစ်သည်။ |
နောက်ထပ် ဥပမာများ
ဥပမာ
ဤဥပမာတွင် ကျွန်ုပ်တို့သည် မတူညီသော algorithms များကို စမ်းသပ်ပါမည်။
<?php
// 2 character salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('something','st')."\n<br>";
}
else
{
echo "Standard DES not supported.\n<br>";
}
// 4 character salt
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES: ".crypt('something','_S4..some')."\n<br>";
}
else
{
echo "Extended DES not supported.\n<br>";
}
// 12 character salt starting with $1$
if (CRYPT_MD5 == 1)
{
echo "MD5: ".crypt('something','$1$somethin$')."\n<br>";
}
else
{
echo "MD5 not supported.\n<br>";
}
// Salt starting with $2a$. The two digit cost parameter: 09. 22 characters
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>";
}
else
{
echo "Blowfish DES not supported.\n<br>";
}
// 16 character salt starting with $5$. The default number of rounds is 5000.
if (CRYPT_SHA256 == 1)
{
echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; }
else
{
echo "SHA-256 not supported.\n<br>";
}
// 16 character salt starting with $6$. The default number of rounds is 5000.
if (CRYPT_SHA512 == 1)
{
echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$');
}
else
{
echo "SHA-512 not supported.";
}
?>
အထက်ဖော်ပြပါ ကုဒ်၏ အထွက်သည် (လည်ပတ်မှုစနစ်ပေါ် မူတည်၍ ဖြစ်နိုင်သည်)။
Standard DES: stqAdD7zlbByI
Extended DES: _S4..someQXidlBpTUu6
MD5: $1$somethin$4NZKrUlY6r7K7.rdEOZ0w.
Blowfish: $2a$09$anexamplestringforsaleLouKejcjRlExmf1671qw3Khl49R3dfu
SHA-256: $5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4PmoNKQUGWFXlVy9vu9
SHA-512: $6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU/
oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQpp1XKI6LLQ0.
❮ PHP String အကိုးအကား