PHP crypt() 函数
定义和用法
crypt() 函数返回使用 DES、Blowfish 或 MD5 算法加密的字符串。
在不同的操作系统上,该函数的行为不同,某些操作系统支持一种以上的算法类型。在安装时,PHP 会检查什么算法可用以及使用什么算法。
具体的算法依赖于 salt 参数的格式和长度。通过增加由使用特定加密方法的特定字符串所生成的字符串数量,salt 可以使加密更安全。
这里有一些和 crypt() 函数一起使用的常量。这些常量值是在安装时由 PHP 设置的。
常量:
[CRYPT_SALT_LENGTH] | 默认的加密长度。使用标准的 DES 加密,长度为 2 |
[CRYPT_STD_DES] | 基于标准 DES 算法的散列使用 "./0-9A-Za-z" 字符中的两个字符作为盐值。在盐值中使用非法的字符将导致 crypt() 失败。 |
[CRYPT_EXT_DES] | 扩展的基于 DES 算法的散列。其盐值为 9 个字符的字符串,由 1 个下划线后面跟着 4 字节循环次数和 4 字节盐值组成。它们被编码成可打印字符,每个字符 6 位,有效位最少的优先。0 到 63 被编码为 "./0-9A-Za-z"。在盐值中使用非法的字符将导致 crypt() 失败。 |
[CRYPT_MD5] | MD5 散列使用一个以 $1$ 开始的 12 字符的字符串盐值。 |
[CRYPT_BLOWFISH] | Blowfish 算法使用如下盐值:“$2a$”,一个两位 cost 参数,“$” 以及 64 位由 “./0-9A-Za-z” 中的字符组合而成的字符串。在盐值中使用此范围之外的字符将导致 crypt() 返回一个空字符串。两位 cost 参数是循环次数以 2 为底的对数,它的范围是 04-31,超出这个范围将导致 crypt() 失败。 |
CRYPT_SHA256 | SHA-256 စက်ရုံး သုံး 16 စကားလုံး အက်ဥပဒ် ကို အခြေခံ ပြီး 5 ဖြင့် စတင်သော အက်ဥပဒ် ကို အခြေခံ ပြီး ဖြေရှင်းပါ။ အက်ဥပဒ် စကားလုံး မှ စ သော အက်ဥပဒ် စကားလုံး အား ဖြေရှင်းခြင်း လုမ္မာ ကို အသုံးပြု၍ ဖြေရှင်းခြင်း အချက်အလက် ကို အသုံးပြု၍ ဖြေရှင်းပါ။ အချက်အလက် ကို ဖြေရှင်းပါ။ |
CRYPT_SHA512 | SHA-512 စက်ရုံး သုံး 16 စကားလုံး အက်ဥပဒ် ကို အခြေခံ ပြီး 6 ဖြင့် စတင်သော အက်ဥပဒ် ကို အရောင်းချပါ။ အက်ဥပဒ် စကားလုံး မှ စ သော အက်ဥပဒ် စကားလုံး အား ဖြေရှင်းခြင်း လုမ္မာ ကို အသုံးပြု၍ ဖြေရှင်းခြင်း အချက်အလက် ကို အသုံးပြု၍ ဖြေရှင်းပါ။ ဖြေရှင်းခြင်း လုမ္မာ သုံးသည့် အချက်အလက် ကို အသုံးပြု၍ ဖြေရှင်းပါ။ အချက်အလက် ကို ဖြေရှင်းပါ။ |
အခြား စက်ရုံး အခြေအနေများ တွင် အခြား အချက်အလက်များ ကို ကူးယူရာ အခါအားကို အပျက်ကျ ဖြစ်ခြင်း မဟုတ် မရှိဘဲ အချက်အလက်များ ကို သုံးပါ။
မှတ်ချက်အတူပေါင်းသော ဖြေရှင်းစက် မရှိပါ။ crypt() စက် သုံးသည့် သီးခြား စက်ရုံး အတွက် သီးခြား ဖြေရှင်းစက် မရှိပါ။
အက္ခရာ
crypt(str,salt)
အချက်အလက် | ဖော်ပြ |
---|---|
str | အပြုအရင်း။ အက်ဥပဒ်ကို အသုံးပြုရန် အမှတ်ပြုခြင်းများအား အသုံးပြုပါ။ |
salt | ဆိုင်းငံ့သည်။ အောက်ပါ အချက်အလက်များ ကို အသုံးပြု၍ ကျန်းမာသော အက်ဥပဒ်အသုံးများ အား ထိန်းသိမ်းပါ၊ အပျက်အချက်မပါဘဲ အချက်အလက်များ ကို ကူးယူရာ အခါအားကို အပျက်ကျ ဖြစ်ခြင်း မဟုတ် မရှိဘဲ အချက်အလက်များ ကို သုံးပါ။ |
နည်းပါးဆိုင်ရာ
ပြန်လည်သတင်း | အက်ဥပဒ်ပြန်တင်သော စကားလုံးများအား လက်ခံခြင်း သို့မဟုတ် 13 စကားလုံး ခန့် ပိုသော စကားလုံးများ အား လက်ခံခြင်း၊ အဆိုပါ အချက်အလက်များ ကို အပျက်ကျ ဖြစ်ခြင်း ဖြင့် စက်တင့်အပေါ် တခုခု နှင့် အခြားအနေအထား အား အသေးစိတ်ကြည့်မှု မပြုရန် ကြောင်း အောက်ပါ အချက်အလက်များ ကို အသုံးပြုပါ။ |
PHP ပုံစံ | 4+ |
အစားထိုးသုံးသပ်မှု
ပုံစံ | အကျိုးသုံး |
---|---|
5.3.2 | Ulrich Drepper ရှိ လုပ်ငန်း ပေါ်မူတည်၍,SHA-256 လုပ်ငန်း နှင့် SHA-512 လုပ်ငန်း ပါဝင်သော crypt လုပ်ငန်း ပြင်ဆင်ပါသည်。 |
5.3.2 | Blowfish လုပ်ငန်း က ပေါ့လျားသော နေရာမှ အပြီးသတ်ခြင်း ဖြစ်သည်။ အပြီးသတ်ခြင်း အချက် 'အဆိုပါ အမှာ အဆိုပါ လုပ်ငန်း မပြောင်းလဲသေးပါ' ('*0' သို့မဟုတ် '*1') အစား ပြန်လည် DES လုပ်ငန်း ကို အသုံးပြုပါ。 |
5.3.0 | PHP က ကိုယ်တိုင်အားပေးသော MD5 Crypt လုပ်ငန်း ကို ပါဝင်သည်။ အဆိုပါ လုပ်ငန်း ကို သုံးစွဲသူ မှာ ပိုမို ကျယ်ပြန့်သော လုပ်ငန်း ကို ကူညီရန် သို့မဟုတ် ကျွန်တော်အားပေးသော လုပ်ငန်း ကို သုံးစွဲနိုင်ပါသည်。 |
အကြောင်း
အမှတ် 1
ဒီ အက်ဥပဒ် တွင်,ကျွန်တော် မူးယူမှု ကောင်းများ ကို စမ်းသပ်ပါလိမ့်မယ်:
<?php // 两字符 salt if (CRYPT_STD_DES == 1) { echo "Standard DES: ".crypt('something','st')."\n<br>"; } else { echo "Standard DES not supported.\n<br>"; } // 4 字符 salt if (CRYPT_EXT_DES == 1) { echo "Extended DES: ".crypt('something','_S4..some')."\n<br>"; } else { echo "Extended DES not supported.\n<br>"; } //以 $1$ 开始的 12 字符 if (CRYPT_MD5 == 1) { echo "MD5: ".crypt('something','$1$somethin$')."\n<br>"; } else { echo "MD5 not supported.\n<br>"; } // 以 $2a$ 开始的 Salt。双数字的 cost 参数:09. 22 字符 if (CRYPT_BLOWFISH == 1) { echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>"; } else { echo "Blowfish DES not supported.\n<br>"; } // အစိတ်အပိုင်း $5$ မှ စတင်သော 16 လုံး salt အား ကိုးကွယ်ပါ။ အခြား သတ်မှတ်ထားသော အချိန် အား 5000 ဖြစ်ပါ။ if (CRYPT_SHA256 == 1) { echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; else { echo "SHA-256 not supported.\n<br>"; } // အစိတ်အပိုင်း $5$ မှ စတင်သော 16 လုံး salt အား ကိုးကွယ်ပါ။ အခြား သတ်မှတ်ထားသော အချိန် အား 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.