PHP -zelfstudie

PHP HOME PHP-intro PHP-installatie PHP-syntaxis PHP-opmerkingen PHP-variabelen PHP-echo / afdrukken PHP-gegevenstypen PHP-strings PHP-nummers PHP-wiskunde PHP-constanten PHP-operators PHP Als...Anders...Anders PHP-switch PHP-loops PHP-functies PHP-arrays PHP Superglobals PHP RegEx

PHP- formulieren

PHP-formulierverwerking PHP-formuliervalidatie PHP-formulier vereist URL/e-mail van PHP-formulier PHP-formulier voltooid

PHP Geavanceerd

PHP-datum en tijd PHP opnemen PHP-bestandsverwerking PHP-bestand openen/lezen PHP-bestand maken/schrijven PHP-bestand uploaden PHP-cookies PHP-sessies PHP-filters PHP-filters geavanceerd PHP-callback-functies PHP JSON PHP-uitzonderingen

PHP OOP

PHP Wat is OOP PHP-klassen/objecten PHP-constructor PHP-vernietiger PHP-toegangsmodificaties PHP-overerving PHP-constanten PHP abstracte lessen PHP-interfaces PHP-kenmerken PHP statische methoden Statische eigenschappen van PHP PHP-naamruimten PHP-iterables

MySQL- database

MySQL-database MySQL Connect MySQL DB maken MySQL-tabel maken MySQL Gegevens invoegen MySQL Laatste ID ophalen MySQL Meerdere invoegen MySQL voorbereid MySQL Gegevens selecteren MySQL Waar MySQL Bestel op MySQL Gegevens verwijderen MySQL-updategegevens MySQL-limietgegevens

PHP XML

PHP XML-parsers PHP SimpleXML-parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

Ajax-intro AJAX PHP AJAX-database AJAX XML Live zoeken in Ajax Ajax-peiling

PHP- voorbeelden

PHP-voorbeelden PHP-compiler PHP-quiz PHP-oefeningen PHP-certificaat

PHP- referentie

PHP-overzicht PHP-array PHP-agenda PHP-datum PHP-map PHP-fout PHP-uitzondering PHP-bestandssysteem PHP-filter PHP FTP PHP JSON PHP-sleutelwoorden PHP Libxml PHP-e-mail PHP-wiskunde PHP Diversen PHP MySQLi PHP-netwerk PHP-uitvoercontrole PHP RegEx PHP SimpleXML PHP-stream PHP-string Beheer van PHP-variabelen PHP XML-parser PHP-zip PHP-tijdzones

PHP crypt() Functie


❮ Referentie voor PHP-tekenreeksen

Definitie en gebruik

De functie crypt() retourneert een gehashte tekenreeks met behulp van DES-, Blowfish- of MD5-algoritmen.

Deze functie gedraagt ​​zich anders op verschillende besturingssystemen. PHP controleert welke algoritmen beschikbaar zijn en welke algoritmen moeten worden gebruikt wanneer het is geïnstalleerd.

De zoutparameter is optioneel. Echter, crypt() creëert een zwak wachtwoord zonder het zout. Zorg ervoor dat u een zout opgeeft dat sterk genoeg is voor een betere beveiliging.

Er zijn enkele constanten die samen met de functie crypt() worden gebruikt. De waarde van deze constanten wordt ingesteld door PHP wanneer het is geïnstalleerd.

constanten:

  • [CRYPT_STD_DES] - Standaard op DES gebaseerde hash met een salt van twee tekens uit het alfabet "./0-9A-Za-z". Als u ongeldige tekens in de salt gebruikt, mislukt deze functie.
  • [CRYPT_EXT_DES] - Uitgebreide DES-gebaseerde hash met een salt van negen tekens bestaande uit een onderstrepingsteken gevolgd door 4 bytes iteratietelling en 4 bytes salt. Deze worden gecodeerd als afdrukbare tekens, 6 bits per teken, het minst significante teken eerst. De waarden 0 tot 63 zijn gecodeerd als "./0-9A-Za-z". Als u ongeldige tekens in de salt gebruikt, mislukt de functie.
  • [CRYPT_MD5] - MD5-hashing met een salt van 12 tekens beginnend met $1$
  • [CRYPT_BLOWFISH] - Blowfish hashing met een salt beginnend met $2a$, $2x$ of $2y$, een tweecijferige kostenparameter "$", en 22 tekens uit het alfabet "./0-9A-Za-z" . Het gebruik van tekens buiten het alfabet zorgt ervoor dat deze functie een tekenreeks met lengte nul retourneert. De parameter "$" is de logaritme met grondtal-2 van de iteratietelling voor de onderliggende hash-algoritmemeter met Blowfish-bashen en moet in het bereik 04-31 liggen. Waarden buiten dit bereik zorgen ervoor dat de functie mislukt.
  • [CRYPT_SHA_256] - SHA-256 hash met een salt van 16 tekens beginnend met $5$. Als de salt-reeks begint met "rounds=<N>$", wordt de numerieke waarde van N gebruikt om aan te geven hoe vaak de hash-lus moet worden uitgevoerd, net zoals de parameter cost op Blowfish. Het standaard aantal ronden is 5000, er is een minimum van 1000 en een maximum van 999.999.999. Elke selectie van N buiten dit bereik wordt afgekapt tot de dichtstbijzijnde limiet.
  • [CRYPT_SHA_512] - SHA-512 hash met een salt van 16 tekens beginnend met $6$. Als de salt-string begint met "rounds=<N>$", wordt de numerieke waarde van N gebruikt om aan te geven hoe vaak de hash-lus moet worden uitgevoerd, net zoals de parameter cost op Blowfish. Het standaard aantal ronden is 5000, er is een minimum van 1000 en een maximum van 999.999.999. Elke selectie van N buiten dit bereik wordt afgekapt tot de dichtstbijzijnde limiet.

Op systemen waar deze functie meerdere algoritmen ondersteunt, worden de bovenstaande constanten ingesteld op "1" indien ondersteund en op "0" anders.

Opmerking: er is geen decoderingsfunctie. De functie crypt() gebruikt een eenrichtingsalgoritme.


Syntaxis

crypt(str,salt)

Parameterwaarden

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


Technische details

Winstwaarde: Retourneert de gecodeerde tekenreeks of een tekenreeks die korter is dan 13 tekens en die gegarandeerd verschilt van de salt on failure
PHP-versie: 4+
Wijzigingslogboek: PHP 5.6.0 - Toont een E_NOTICE beveiligingswaarschuwing als zout wordt weggelaten.
PHP 5.3.7 - Blowfish-modi van $ 2x$ en $ 2y$ toegevoegd.
PHP 5.3.2 - SHA-256 en SHA-512 toegevoegd. Vast Blowfish-gedrag bij ongeldige rondes retourneert de tekenreeks "mislukt" ("*0" of "*1"), in plaats van terug te vallen op DES.
PHP 5.3.0 - PHP bevat nu zijn eigen implementatie voor MD5-crypt, Standard DES, Extended DES en de Blowfish-algoritmen en zal die gebruiken als het systeem geen ondersteuning biedt voor een of meer van de algoritmen.

Meer voorbeelden

Voorbeeld

In dit voorbeeld zullen we de verschillende algoritmen testen:

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

De uitvoer van de bovenstaande code zou kunnen zijn (afhankelijk van het besturingssysteem):

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.


❮ Referentie voor PHP-tekenreeksen