Najnowsze tutoriale tworzenie stron internetowych
 

PHP crypt() Function


<String referencyjny PHP

Definicja i Wykorzystanie

crypt() zwraca się zaszyfrowany ciąg użyciu algorytmów DES Blowfish lub MD5.

Funkcja ta zachowuje się inaczej w różnych systemach operacyjnych. PHP sprawdza, jakie są dostępne i jakie algorytmy algorytmy w użyciu, gdy jest on zainstalowany.

Parametr sól jest opcjonalne. Jednak crypt() tworzy słabe hasła bez soli. Upewnij się, aby określić wystarczająco silny soli dla lepszego bezpieczeństwa.

Istnieją pewne stałe, które są używane wraz z crypt() funkcji. Wartość tych stałych są ustawione na PHP, gdy jest on zainstalowany.

stałe:

  • [CRYPT_STD_DES] - standard DES oparte hash z dwoma soli znak z alfabetu "./0-9A-Za-z" . Korzystanie nieprawidłowe znaki w soli spowoduje funkcja ta się nie powiedzie.
  • [CRYPT_EXT_DES] - przedłużony mieszania DES oparciu o sól dziewięć postaci obejmującej podkreślenia następnie 4 bajtów liczbie iteracji i 4 bajty soli. Te są kodowane w postaci nadruku, 6 bitów każdego znaku najmniej znaczącego znaku pierwszego. Wartości od 0 do 63, są kodowane jako "./0-9A-Za-z" . Korzystanie nieprawidłowe znaki w soli spowoduje, że funkcja nie powiedzie się.
  • [CRYPT_MD5] - MD5 mieszania z solą 12 postaci wychodząc z 1 $ $
  • [CRYPT_BLOWFISH] - Blowfish mieszania z soli, wychodząc z $ 2a, $ 2x $, $ i $ 2y, a dwa parametry kosztów cyfra "$" i 22 znaków z alfabetu "./0-9A-Za-z" , Używanie znaków spoza alfabetu spowoduje to funkcja zwraca ciąg znaków o zerowej długości. "$" Parametrem jest baza-2 logarytm liczby iteracji dla bazowego Blowfish-bashed mieszaja algorithmeter i musi być w przedziale 04-31. Wartości spoza tego zakresu spowoduje, że funkcja nie powiedzie się.
  • [CRYPT_SHA_256] - SHA-256 mieszania w postaci soli 16 rozpoczynając z $ 5 $. Jeśli łańcuch sól zaczyna się "rounds=<N>$" , wartość liczbowa N służy do wskazania, ile razy pętla mieszania powinien być wykonany, podobnie jak parametr kosztu na Blowfish. Domyślna liczba rund jest 5000, znajduje się co najmniej 1000 i maksymalnie 999,999,999. Dowolny wybór N poza ten zakres zostanie obcięty do najbliższej granicy.
  • [CRYPT_SHA_512] - SHA-512 mieszania w postaci soli 16 wychodząc z 6 $ $. Jeśli łańcuch sól zaczyna się "rounds=<N>$" , wartość liczbowa N służy do wskazania, ile razy pętla mieszania powinien być wykonany, podobnie jak parametr kosztu na Blowfish. Domyślna liczba rund jest 5000, znajduje się co najmniej 1000 i maksymalnie 999,999,999. Dowolny wybór N poza ten zakres zostanie obcięty do najbliższej granicy.

W systemach, w których ta funkcja obsługuje wiele algorytmów, stałe powyższe są ustawione na "1" jeśli wspierane i "0" w przeciwnym wypadku.

Note: Nie ma funkcji odszyfrować. crypt() funkcja wykorzystuje algorytm jednokierunkowe.


Składnia

crypt( str,salt )

Parametr Opis
str Wymagany. Określa ciąg być mieszany
salt Opcjonalny. Ciąg sól oprzeć mieszania na

Szczegóły techniczne

Zwracana wartość: Zwraca zakodowany ciąg lub ciąg znaków, który jest krótszy niż 13 znaków i jest gwarantowane, aby różnić się od soli na niepowodzenie
Wersja PHP: 4+
Lista zmian: $ 2x dolarów i 2Y tryby $ Blowfish zostały dodane w PHP 5.3.7 radzić sobie z potencjalnymi atakami high-bitowych.

Stałe SHA-256 i SHA-512 dodano PHP 5.3.2.

Od PHP 5.3.2, Blowfish zachowanie na nieprawidłowych rund zwraca "failure" ciąg ("*0" or "*1") , zamiast opaść z powrotem do DES.

Od PHP 5.3.0, PHP zawiera własną implementację do krypty MD5, Standard, Extended DES DES i algorytmów Blowfish i użyje, że jeśli system brakuje wsparcia dla jednego lub więcej algorytmów.

Przykład

Przykład 1

W tym przykładzie będziemy testować różne algorytmy:

<?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 $5$. 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.";
}
?>

Wyjście z kodem powyżej może być (depending on the operating system) :

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.


<String referencyjny PHP