PHP crypt() 函数

定义和用法

crypt() 函数返回使用 DES、Blowfish 或 MD5 算法加密的字符串。

Mfupaji wa kawaida unaendana na mifano ya kufupaji kina kina cha kufupaji. Kina kina cha kufupaji kinatumiwa kwa muda wa kusambaza.

Mfupaji wa kawaida unapenda mifano ya chukua kina kina cha kufupaji. Chukua kinakadhiwa na kufaliwa kwa kumfupaji kina kina cha kufupaji.

Hapa kuna kipimo kati ya kufanyishwa kwa crypt() kina kina cha kufupaji. Kipimo hiki kinatumiwa kwa muda wa kusambaza.

Kipimo:

[CRYPT_SALT_LENGTH] Ukubwa wa uharibifu wa kawaida. Kina kina cha kufupaji cha DES cha kawaida, ukubwa wa 2
[CRYPT_STD_DES] Kufupaji cha DES cha kawaida kinatumiwa na pili herufi kutoka "./0-9A-Za-z" kama chukua. Kuwa na herufi bila kazi kwenye chukua kinakadhiwa na kufaliwa kwa crypt().
[CRYPT_EXT_DES] Mfupaji wa kufupaji cha DES kutoka. Kina kina cha chukua 9 herufi, ikianza na herufi moja kueleza 4 byte ya mifano na 4 byte ya chukua. Zilifanyishwa kwa herufi inayoweza kufichwa, kila herufi 6 herufi, herufi inayotumiwa kwa uangalifu wa miwili. 0 hadi 63 zilifanyishwa kwa "./0-9A-Za-z". Kuwa na herufi bila kazi kwenye chukua kinakadhiwa na kufaliwa kwa crypt().
[CRYPT_MD5] MD5 散列使用一个以 $1$ 开始的 12 字符的字符串盐值。
[CRYPT_BLOWFISH] Blowfish 算法使用如下盐值:“$2a$”,一个两位 cost 参数,“$” 以及 64 位由 “./0-9A-Za-z” 中的字符组合而成的字符串。在盐值中使用此范围之外的字符将导致 crypt() 返回一个空字符串。两位 cost 参数是循环次数以 2 为底的对数,它的范围是 04-31,超出这个范围将导致 crypt() 失败。
CRYPT_SHA256 Algoriti ya SHA-256 inatumiwa kwa kumaliza stringi ya 16 herufu iliyotumika kwa salt iliyotumika kwa kuzingatia $5. Ikiwa stringi ya salt inastartea na "rounds=<N>$", thamani ya N itatumiwa kwa kumaliza kichukua kwa sababu ya uharibifu. Matokeo wa kichukua kwa kufikia 5000, kimaadili 1000, na kikubwa 999,999,999. Thamani ya N inatumiwa kwa kumaliza kichukua kwa sababu ya uharibifu ya cost.
CRYPT_SHA512 Algoriti ya SHA-512 inatumiwa kwa kumaliza stringi ya 16 herufu iliyotumika kwa salt iliyotumika kwa kuzingatia $6. Ikiwa stringi ya salt inastartea na "rounds=<N>$", thamani ya N itatumiwa kwa kumaliza kichukua kwa sababu ya uharibifu. Matokeo wa kichukua kwa kufikia 5000, kimaadili 1000, na kikubwa 999,999,999. Thamani ya N inatumiwa kwa kumaliza kichukua kwa sababu ya uharibifu ya Blowfish. N inatumiwa kwa kumaliza kichukua kwa sababu ya uharibifu ya cost.

Kwa msimbo ambao huzatumiwa kwa algoriti zaidi, ikiwa inahusiana na muhimu wa uharibifu wa ukurasa, inasababisha kuweka "1", au "0" ikiwa inafikia.

Maelezo:Hakuna programu ya kuhifadhi ya kufungua. Kifungua crypt() inatumiwa kwa algoriti ya kichukua moja tu.

Inayokusudia

crypt(str,salt)
Matumizi Kuelewa
str Inayohitajika. Inasababisha stringi iliyotumika kwa kusababisha uharibifu.
salt Inayowezekana. Inatumiwa kufanya stringi inayotumika zaidi na kumfikia hisia zaidi. Ikiwa hakuna thamani ya salt, PHP haitumiiwa kila mara kumchukua salt kwenye kifo cha kifungua.

Vituo ya kidokezo

Matokeo wa kifungua: Ina kifungua stringi zilizokudumisha au stringi iliyoweza kuzingatia haraka 13 herufu, ili kuwasaidia kuzichukua na salt kama ya kisha kufaliwa.
PHP na versioni: 4+

日志 ya msasira

Versiyoni Muhtasari
5.3.2 Inaandaa implementi ya Ulrich Drepper, inaongeza crypt kwa algoriti ya SHA-256 na SHA-512.
5.3.2 Iliharibisha matokeo ya Blowfish kwa sababu ya kirefu ya uharibifu, inarudi heri inayosababisha kufikia stringi ya kufaika ("*0" au "*1") bila kuhitaji kufanyia DES.
5.3.0 PHP ina implementi yake wa MD5 Crypt, ikiwakilisha algoriti za DES kwa standardi, DES kwa upelezi na Blowfish. Ikiwa kina kufikia maadili ya kufanya, PHP itakae kufanya kwa uwanja wake.

Mivuno

Mivuno 1

Kwenye mivuno hii, tutaendeleza vizuio vingine vya algoriti:

<?php
// Heri 2 ya salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('kuvika','st')."\n<br>";
}
else
{
echo "Standard DES inasikilizi.\n<br>";
}
// Heri 4 ya salt
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES: ".crypt('kuvika','_S4..some')."\n<br>";
}
else
{
echo "Extended DES inasikilizi.\n<br>";
}
// Ilivyo kwa $1$ heri 12
if (CRYPT_MD5 == 1)
{
echo "MD5: ".crypt('kuvika','$1$somethin$')."\n<br>";
}
else
{
echo "MD5 inasikilizi.\n<br>";
}
// Salt ilivyo kwa $2a$. Vipengele 2 vingine ya uadilifu: 09. 22 heri
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('kuvika','$2a$09$anexamplestringforsalt$')."\n<br>";
}
else
{
echo "Blowfish DES inasikilizi.\n<br>";
}
// Matokeo wa $5$ ya 16 herufi ya salt. Namba ya kuzingatia kwa juu ni 5000.
if (CRYPT_SHA256 == 1)
{
echo "SHA-256: ".crypt('kuvika','$5$rounds=5000$anexamplestringforsalt$')."\n<br>";
else
{
echo "SHA-256 haikusaidiwa.\n<br>";
}
// Matokeo wa $5$ ya 16 herufi ya salt. Namba ya kuzingatia kwa juu ni 5000.
if (CRYPT_SHA512 == 1)
{
echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$');
}
else
{
echo "SHA-512 haikusaidiwa.";
}
?>

Matokeo ya kifungu hiki (kuzingatia muundo wa mifumo):

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.