Neueste Web-Entwicklung Tutorials
 

PHP crypt() Function


<PHP String Referenz

Definition und Verwendung

Die crypt() Funktion gibt eine gehashte Zeichenkette unter Verwendung von DES, Blowfish oder MD5 - Algorithmen.

Diese Funktion verhält sich unterschiedlich auf unterschiedlichen Betriebssystemen. PHP prüft, was Algorithmen zur Verfügung stehen und welche Algorithmen zu verwenden, wenn es installiert ist.

Das Salz Parameter ist optional. Allerdings crypt() erzeugt ein schwaches Passwort , ohne das Salz. Achten Sie auf ein stark genug Salz für eine bessere Sicherheit zu spezifizieren.

Es gibt einige Konstanten , die zusammen mit der Verwendung von crypt() Funktion. Der Wert dieser Konstanten werden eingestellt, indem PHP, wenn es installiert ist.

Konstanten:

  • [CRYPT_STD_DES] - Standard DES-Hash mit zwei Zeichen Salz aus dem Alphabet "./0-9A-Za-z" . Mit ungültigen Zeichen in dem Salz bewirkt, dass diese Funktion zum Scheitern verurteilt.
  • [CRYPT_EXT_DES] - Extended-DES-basierten Hash mit einem Salz neun Charakter eines durch 4 Bytes Iterationszähler und 4 Bytes von Salz gefolgt Strich besteht. Diese werden als druckbare Zeichen codiert, 6 Bits pro Zeichen, niedrigstwertige Zeichen zuerst. Die Werte von 0 bis 63 werden als codierte "./0-9A-Za-z" . Mit ungültigen Zeichen in dem Salz bewirkt, dass die Funktion zum Scheitern verurteilt.
  • [CRYPT_MD5] - Hashing MD5 mit einem 12-Zeichen-Salt mit $ 1 $ beginnen
  • [CRYPT_BLOWFISH] - Blowfish - Hashing mit einem Salz mit $ 2a $ beginnen, $ 2x $ oder $ 2j $, einen zweistelligen Kostenparameter "$" , und 22 Zeichen aus dem Alphabet "./0-9A-Za-z" . Zeichen außerhalb des Alphabets verwendet, wird diese Funktion veranlassen, eine leere Zeichenfolge zurück. Der "$" Parameter ist die Basis-2 - Logarithmus des Iterationszahlcode für den darunter liegenden Blowfish-bashed Hashing algorithmeter und 04-31 in Reichweite sein muß. Werte außerhalb dieses Bereichs führt dazu, dass die Funktion zum Scheitern verurteilt.
  • [CRYPT_SHA_256] - SHA-256-Hash mit einem 16-Zeichen-Salz mit $ 5 $ beginnen. Wenn das Salz String beginnt mit "rounds=<N>$" , wird der numerische Wert von N verwendet , um anzuzeigen , wie oft sollte die Hashing - Schleife ausgeführt werden, ähnlich wie die Kostenparameter auf Blowfish. Die Standardanzahl der Runden ist 5000, gibt es ein Minimum von 1000 und maximal 999.999.999. Jede Auswahl von N außerhalb dieses Bereichs wird auf die nächste Grenze abgeschnitten.
  • [CRYPT_SHA_512] - SHA-512-Hash mit einem 16-Zeichen-Salz mit $ $ 6 beginnen. Wenn das Salz String beginnt mit "rounds=<N>$" , wird der numerische Wert von N verwendet , um anzuzeigen , wie oft sollte die Hashing - Schleife ausgeführt werden, ähnlich wie die Kostenparameter auf Blowfish. Die Standardanzahl der Runden ist 5000, gibt es ein Minimum von 1000 und maximal 999.999.999. Jede Auswahl von N außerhalb dieses Bereichs wird auf die nächste Grenze abgeschnitten.

Auf Systemen , bei denen diese Funktion mehrere Algorithmen unterstützt, werden die Konstanten oben auf "1" , wenn unterstützt und "0" sonst.

Note: Es gibt keine Entschlüsselungsfunktion. Die crypt() -Funktion verwendet einen Einweg-Algorithmus.


Syntax

crypt( str,salt )

Parameter Beschreibung
str Erforderlich. Gibt die Zeichenfolge gehasht werden
salt Optional. Ein Salz Zeichenfolge Basis, um die Hashing-on

Technische Details

Rückgabewert: Gibt die codierte Zeichenfolge oder eine Zeichenfolge, die kürzer als 13 Zeichen sind und garantiert aus dem Salz bei einem Fehler unterscheiden
PHP Version: 4+
Änderungsprotokoll: $ 2x $ und 2j $ $ Blowfish-Modi wurden in PHP 5.3.7 hinzugefügt mit potentiellen High-Bit-Angriffe zu behandeln.

Die Konstanten SHA-256 und SHA-512 wurden in PHP 5.3.2 hinzugefügt.

Ab PHP 5.3.2, gibt Blowfish Verhalten auf ungültige Runden um den "failure" Zeichenfolge ("*0" or "*1") , statt zurück zu DEM fallen.

Ab PHP 5.3.0, enthält PHP eine eigene Implementierung für die MD5 Krypta, Standard DES, Erweiterte DES und Blowfish die Algorithmen und die verwendet werden, wenn das System für eine oder mehrere der Algorithmen der Unterstützung fehlt.

Beispiel

Beispiel 1

In diesem Beispiel testen wir die verschiedene Algorithmen:

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

Die Ausgabe des obigen Code sein könnte (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.


<PHP String Referenz