PHP krypta function ()
Definicja i Wykorzystanie
crypt () zwraca stosowanie DES, Blowfish lub algorytm MD5 do szyfrowania ciąg.
Na różnych systemach operacyjnych, różne zachowania funkcji, niektóre systemy operacyjne obsługują więcej niż jeden typ algorytmu. Podczas instalacji PHP będzie sprawdzić, co jest dostępne i co algorytm algorytm.
Dokładne algorytmy polegać na formie i długość argumentów soli. Sól może szyfrowania bezpieczniejsze zwiększając liczbę od konkretnego łańcucha ze szczególnym sposobie szyfrowania, generuje się ciąg.
Oto kilka stałych i crypt () jest używane z. Stała wartość jest ustawiona na instalację przez PHP.
Stała:
- [CRYPT_SALT_LENGTH] - domyślnie długość szyfrowania. Używając standardowego szyfrowania DES, długość 2
- [CRYPT_STD_DES] - szyfrowanie DES oparte na standardzie soli 2-znakowego alfabetu, od "./0-9A-Za-z". Nieprawidłowe znaki w soli doprowadzi do funkcji nie powiodło się.
- [CRYPT_EXT_DES] - Rozszerzony szyfrowanie DES oparte mają solnych 9 znaków przez podkreśleniem tyłu z 4 bajtów liczby iteracji i 4 bajty składu soli. Są one kodowane jako druku znaków, każdy z 6 najmniej znaczącego charakteru jako pierwszy. 0-63 Wartość jest zakodowana jako "./0-9A-Za-z". Nieprawidłowe znaki w soli doprowadzi do funkcji nie powiodło się.
- [CRYPT_MD5] - szyfrowanie MD5 mają Salt 12 znaków, począwszy od $ 1 $.
- [CRYPT_BLOWFISH] - szyfrowanie Blowfish ma $ 2a $, 2x $ $ lub $ 2y $ początek sól, parametr kosztów dwucyfrowy, "$", jak również z alfabetu "./0-9A-Za-z" 22 znaków. Użyj innych niż litery alfabetu spowoduje funkcja zwraca ciąg znaków 0. "$" Parametr jest podstawą 2 logarytm liczby iteracji algorytmu Blowfish mieszania powinna być w zakresie 04-31. Wartości poza tym zakresem doprowadzi do funkcji nie powiodło się.
- [CRYPT_SHA_256] - szyfrowanie SHA-256 ma SALT 16 znaków, począwszy od $ 5 $. Jeśli łańcuch sól "rund = <n> $" rozpoczyna się, wartość cyfrowa N razy hash używany do wskazania pętli jest wykonywany, który jest podobny do parametru kosztów Blowfish. Domyślna liczba cykli wynosi 5000, wartość minimalna to 1000, maksymalna wynosi 999.999.999. N jest dowolna wartość spoza tego zakresu będą konwertowane do najbliższej wartości granicznej.
- [CRYPT_SHA_512] - szyfrowanie SHA-512 ma SALT 16 znaków, począwszy od $ 6 $. Jeśli łańcuch sól "rund = <n> $" rozpoczyna się, wartość cyfrowa N razy hash używany do wskazania pętli jest wykonywany, który jest podobny do parametru kosztów Blowfish. Domyślna liczba cykli wynosi 5000, wartość minimalna to 1000, maksymalna wynosi 999.999.999. N jest dowolna wartość spoza tego zakresu będą konwertowane do najbliższej wartości granicznej.
Na Funkcja ta obsługuje systemu wielu algorytmów, jeśli jest obsługiwana wyżej stała jest ustawiony na "1", w przeciwnym razie jest on ustawiony na "0"
Uwaga: Nie maco odpowiada funkcji deszyfrowania. crypt () Funkcja ta wykorzystuje algorytm jednokierunkową.
gramatyka
参数 | 描述 |
---|---|
str | 必需。规定要编码的字符串。 |
salt | 可选。用于增加被编码字符数目的字符串,以使编码更加安全。如果未提供 salt 参数,则每次调用该函数时会随机生成一个。 |
dane techniczne
Zwraca: | Zwraca zaszyfrowany ciąg, jeżeli nie zwróci mniej niż 13 i nie więcej gwarancja ciągu różni się od soli. |
---|---|
Wersja PHP: | 4+ |
dziennika aktualizacji: | W PHP 5.3.7, dodać $ 2x dolarów i 2Y tryby $ Blowfish obsłużyć wysoki potencjalny atak. W PHP 5.3.2, dodać stałą SHA-256 i SHA-512. Od PHP 5.3.2 roku, Blowfish w nieprawidłowym pętli powróci "awarii" ciąg ( "* 0" lub "* 1"), a nie z powrotem do DES. Począwszy od PHP 5.3.0, PHP wyposażony szyfrowania MD5 osiągnąć, osiągnięcie standardu DES, Blowfish oraz DES rozszerzony algorytm do osiągnięcia. Jeśli system nie obsługuje algorytmy te wykorzysta własny algorytm PHP. |
Przykłady
Przykład 1
W tym przykładzie będziemy testować różne algorytmy:
// 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.";
}
?>
Powyższy kod wyprowadza następująco (w zależności od systemu operacyjnego):
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 referencyjny String