PHP crypt() Funksie
❮ PHP-stringverwysing
Definisie en gebruik
Die crypt()-funksie gee 'n hashed-string terug deur DES-, Blowfish- of MD5-algoritmes te gebruik.
Hierdie funksie tree anders op op verskillende bedryfstelsels. PHP kontroleer watter algoritmes beskikbaar is en watter algoritmes om te gebruik wanneer dit geïnstalleer is.
Die soutparameter is opsioneel. crypt() skep egter 'n swak wagwoord sonder die sout. Maak seker dat jy 'n sterk genoeg sout spesifiseer vir beter sekuriteit.
Daar is 'n paar konstantes wat saam met die crypt() funksie gebruik word. Die waarde van hierdie konstantes word deur PHP gestel wanneer dit geïnstalleer word.
Konstante:
- [CRYPT_STD_DES] - Standaard DES-gebaseerde hash met twee karaktersout uit die alfabet "./0-9A-Za-z". Die gebruik van ongeldige karakters in die sout sal veroorsaak dat hierdie funksie misluk.
- [CRYPT_EXT_DES] - Uitgebreide DES-gebaseerde hash met 'n nege karakter sout wat bestaan uit 'n onderstreep gevolg deur 4 grepe van iterasie telling en 4 grepe sout. Dit word geënkodeer as drukbare karakters, 6 bisse per karakter, die minste betekenisvolle karakter eerste. Die waardes 0 tot 63 is geënkodeer as "./0-9A-Za-z". Die gebruik van ongeldige karakters in die sout sal veroorsaak dat die funksie misluk.
- [CRYPT_MD5] - MD5 hashing met 'n 12 karakter sout wat begin met $1$
- [CRYPT_BLOWFISH] - Blowfish hashing met 'n sout wat begin met $2a$, $2x$, of $2y$, 'n tweesyfer-kosteparameters "$", en 22 karakters uit die alfabet "./0-9A-Za-z" . Die gebruik van karakters buite die alfabet sal veroorsaak dat hierdie funksie 'n nul-lengte string terugstuur. Die "$"-parameter is die basis-2-logaritme van die iterasietelling vir die onderliggende Blowfish-bashed hashing-algoritme en moet in die reeks 04-31 wees. Waardes buite hierdie reeks sal veroorsaak dat die funksie misluk.
- [CRYPT_SHA_256] - SHA-256 hash met 'n 16 karakter sout wat begin met $5$. As die soutstring met "rounds=<N>$" begin, word die numeriese waarde van N gebruik om aan te dui hoeveel keer die hashing-lus uitgevoer moet word, baie soos die kosteparameter op Blowfish. Die verstek aantal rondtes is 5000, daar is 'n minimum van 1000 en 'n maksimum van 999,999,999. Enige keuse van N buite hierdie reeks sal tot die naaste limiet afgekap word.
- [CRYPT_SHA_512] - SHA-512 hash met 'n 16 karakter sout wat begin met $6$. As die soutstring met "rounds=<N>$" begin, word die numeriese waarde van N gebruik om aan te dui hoeveel keer die hashing-lus uitgevoer moet word, baie soos die kosteparameter op Blowfish. Die verstek aantal rondtes is 5000, daar is 'n minimum van 1000 en 'n maksimum van 999,999,999. Enige keuse van N buite hierdie reeks sal tot die naaste limiet afgekap word.
Op stelsels waar hierdie funksie veelvuldige algoritmes ondersteun, word die konstantes hierbo gestel op "1" indien ondersteun en "0" andersins.
Let wel: Daar is geen dekripteerfunksie nie. Die crypt()-funksie gebruik 'n eenrigtingalgoritme.
Sintaksis
crypt(str,salt)
Parameterwaardes
Parameter | Description |
---|---|
str | Required. Specifies the string to be hashed |
salt | Optional. A salt string to base the hashing on |
Tegniese besonderhede
Terugkeerwaarde: | Wys die geënkodeerde string of 'n string wat korter as 13 karakters is en is gewaarborg om van die sout te verskil by mislukking |
---|---|
PHP weergawe: | 4+ |
Veranderinglog: | PHP 5.6.0 - Wys 'n E_NOTICE sekuriteitswaarskuwing as sout weggelaat word. PHP 5.3.7 - Bygevoeg $2x$ en $2y$ Blowfish-modusse. PHP 5.3.2 - Bygevoeg SHA-256 en SHA-512. Vaste Blowfish-gedrag op ongeldige rondtes gee "mislukking"-string ("*0" of "*1") terug, in plaas daarvan om terug te val na DES. PHP 5.3.0 - PHP bevat nou sy eie implementering vir MD5 crypt, Standard DES, Extended DES en die Blowfish algoritmes en sal dit gebruik as die stelsel nie ondersteuning vir een of meer van die algoritmes het nie. |
Meer voorbeelde
Voorbeeld
In hierdie voorbeeld sal ons die verskillende algoritmes toets:
<?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.";
}
?>
Die uitvoer van die kode hierbo kan wees (afhangende van die bedryfstelsel):
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-stringverwysing