Samouczek PHP

Strona główna PHP Wprowadzenie do PHP Instalacja PHP Składnia PHP Komentarze PHP Zmienne PHP PHP Echo / Drukuj Typy danych PHP Ciągi PHP Liczby PHP Matematyka w PHP Stałe PHP Operatory PHP PHP Jeśli...Inne...Elseif Przełącznik PHP Pętle PHP Funkcje PHP Tablice PHP PHP Superglobals PHP RegEx

Formularze PHP

Obsługa formularzy PHP Walidacja formularzy PHP Wymagany formularz PHP Adres URL/e-mail formularza PHP Formularz PHP kompletny

Zaawansowany PHP

Data i godzina w PHP Uwzględnij PHP Obsługa plików PHP Otwórz/odczytaj plik PHP Tworzenie/zapisywanie plików PHP Przesyłanie plików PHP Pliki cookie PHP Sesje PHP Filtry PHP Zaawansowane filtry PHP Funkcje wywołania zwrotnego PHP PHP JSON Wyjątki PHP

PHP OOP

PHP Co to jest OOP Klasy/obiekty PHP Konstruktor PHP Destruktor PHP Modyfikatory dostępu PHP Dziedziczenie PHP Stałe PHP Klasy abstrakcyjne PHP Interfejsy PHP Cechy PHP Metody statyczne PHP Właściwości statyczne PHP Przestrzenie nazw PHP Iterowalne PHP

Baza danych MySQL

Baza danych MySQL Połączenie MySQL Tworzenie bazy danych MySQL Utwórz tabelę MySQL Wstaw dane MySQL Pobierz ostatni identyfikator MySQL Wstaw wiele MySQL Przygotowano MySQL Wybierz dane MySQL MySQL Gdzie Zamów MySQL według Usuń dane MySQL Dane aktualizacji MySQL Dane limitu MySQL

PHP XML

Parsery PHP XML Parser PHP SimpleXML PHP SimpleXML — Get Rozszerzenie PHP XML PHP XML DOM

PHP - AJAX

Wprowadzenie do AJAX AJAX PHP Baza danych AJAX XML AJAX Wyszukiwanie na żywo AJAX Ankieta AJAX

Przykłady PHP

Przykłady PHP Kompilator PHP Quiz PHP Ćwiczenia PHP Certyfikat PHP

Odniesienie do PHP

Przegląd PHP Tablica PHP Kalendarz PHP Data PHP Katalog PHP Błąd PHP Wyjątek PHP System plików PHP Filtr PHP PHP FTP PHP JSON Słowa kluczowe PHP Biblioteka PHP Poczta PHP Matematyka w PHP Różne PHP PHP MySQLi Sieć PHP Kontrola wyjścia PHP PHP RegEx PHP SimpleXML Strumień PHP ciąg PHP Obsługa zmiennych PHP Parser PHP XML Kod pocztowy PHP Strefy czasowe PHP

PHP crypt() Funkcja


❮ Odniesienie do ciągów PHP

Definicja i użycie

Funkcja crypt() zwraca zaszyfrowany ciąg przy użyciu algorytmów DES, Blowfish lub MD5.

Ta funkcja działa inaczej w różnych systemach operacyjnych. PHP sprawdza, jakie algorytmy są dostępne i jakich użyć po zainstalowaniu.

Parametr sól jest opcjonalny. Jednak crypt() tworzy słabe hasło bez soli. Upewnij się, że określiłeś wystarczająco mocną sól, aby zapewnić lepsze bezpieczeństwo.

Istnieje kilka stałych, które są używane razem z funkcją crypt(). Wartość tych stałych jest ustawiana przez PHP podczas instalacji.

Stałe:

  • [CRYPT_STD_DES] – Standardowy skrót oparty na DES z dwuznakową solą z alfabetu „./0-9A-Za-z”. Użycie nieprawidłowych znaków w soli spowoduje niepowodzenie tej funkcji.
  • [CRYPT_EXT_DES] – Rozszerzony hash oparty na DES z dziewięcioznakową solą składającą się z podkreślenia, po którym następują 4 bajty licznika iteracji i 4 bajty soli. Są one zakodowane jako znaki drukowane, 6 bitów na znak, najpierw najmniej znaczący znak. Wartości od 0 do 63 są zakodowane jako "./0-9A-Za-z". Użycie nieprawidłowych znaków w soli spowoduje awarię funkcji.
  • [CRYPT_MD5] – haszowanie MD5 z 12-znakową solą zaczynającą się od $1$
  • [CRYPT_BLOWFISH] – mieszanie Blowfish z solą zaczynającą się od $2a$, $2x$ lub $2y$, dwucyfrowe parametry kosztu „$” i 22 znaki alfabetu „./0-9A-Za-z” . Użycie znaków spoza alfabetu spowoduje, że ta funkcja zwróci ciąg o zerowej długości. Parametr „$” jest logarytmem o podstawie 2 z liczby iteracji dla bazowego algorytmu mieszającego Blowfish-bashed i musi mieścić się w zakresie 04-31. Wartości spoza tego zakresu spowodują awarię funkcji.
  • [CRYPT_SHA_256] - hash SHA-256 z 16-znakową solą zaczynającą się od $5$. Jeśli ciąg soli zaczyna się od „rounds=<N>$”, wartość liczbowa N jest używana do wskazania, ile razy pętla mieszająca powinna zostać wykonana, podobnie jak parametr cost w Blowfish. Domyślna liczba rund to 5000, minimalnie 1000 i maksymalnie 999 999 999. Każdy wybór N spoza tego zakresu zostanie obcięty do najbliższego limitu.
  • [CRYPT_SHA_512] - hash SHA-512 z 16-znakową solą zaczynającą się od 6$. Jeśli ciąg soli zaczyna się od „rounds=<N>$”, wartość numeryczna N jest używana do wskazania, ile razy pętla mieszająca powinna zostać wykonana, podobnie jak parametr cost w Blowfish. Domyślna liczba rund to 5000, minimalnie 1000 i maksymalnie 999 999 999. Każdy wybór N spoza tego zakresu zostanie obcięty do najbliższego limitu.

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

Uwaga: nie ma funkcji odszyfrowywania. Funkcja crypt() wykorzystuje algorytm jednokierunkowy.


Składnia

crypt(str,salt)

Wartości parametrów

Parameter Description
str Required. Specifies the string to be hashed
salt Optional. A salt string to base the hashing on


Szczegóły techniczne

Wartość zwrotu: Zwraca zakodowany ciąg lub ciąg krótszy niż 13 znaków i na pewno będzie różnić się od soli w przypadku niepowodzenia
Wersja PHP: 4+
Dziennik zmian: PHP 5.6.0 - Wyświetla ostrzeżenie bezpieczeństwa E_NOTICE, jeśli pominięto sól .
PHP 5.3.7 - Dodano tryby 2x$ i 2y$ Blowfish.
PHP 5.3.2 - Dodano SHA-256 i SHA-512. Naprawiono zachowanie Blowfish w nieprawidłowych rundach, które zwraca ciąg "failure" ("*0" lub "*1"), zamiast wracać do DES.
PHP 5.3.0 - PHP zawiera teraz własną implementację algorytmów MD5 crypt, Standard DES, Extended DES i Blowfish i użyje jej, jeśli system nie obsługuje jednego lub więcej algorytmów.

Więcej przykładów

Przykład

W tym przykładzie przetestujemy 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 $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.";
}
?>

Wynikiem powyższego kodu może być (w zależności od systemu operacyjnego):

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.


❮ Odniesienie do ciągów PHP