PHP -Tutorial

PHP-HOME PHP-Einführung PHP-Installation PHP-Syntax PHP-Kommentare PHP-Variablen PHP-Echo / Drucken PHP-Datentypen PHP-Strings PHP-Nummern PHP-Mathematik PHP-Konstanten PHP-Operatoren PHP If...Else...Elseif PHP-Schalter PHP-Schleifen PHP-Funktionen PHP-Arrays PHP-Superglobals PHP-RegEx

PHP -Formulare

Handhabung von PHP-Formularen PHP-Formularvalidierung PHP-Formular erforderlich PHP-Formular-URL/E-Mail PHP-Formular vollständig

PHP- Erweitert

PHP-Datum und -Zeit PHP einschließen Umgang mit PHP-Dateien PHP-Datei öffnen/lesen PHP-Datei erstellen/schreiben Hochladen von PHP-Dateien PHP-Cookies PHP-Sitzungen PHP-Filter PHP-Filter für Fortgeschrittene PHP-Callback-Funktionen PHP-JSON PHP-Ausnahmen

PHP -OOP

PHP Was ist OOP PHP-Klassen/Objekte PHP-Konstruktor PHP-Destruktor PHP-Zugriffsmodifikatoren PHP-Vererbung PHP-Konstanten Abstrakte PHP-Klassen PHP-Schnittstellen PHP-Eigenschaften Statische PHP-Methoden Statische PHP-Eigenschaften PHP-Namespaces PHP-Iterables

MySQL- Datenbank

MySQL-Datenbank MySQL Connect MySQL-DB erstellen MySQL-Tabelle erstellen MySQL-Daten einfügen MySQL Letzte ID abrufen MySQL Mehrfach einfügen MySQL vorbereitet MySQL Select-Daten MySQL-Wo MySQL-Reihenfolge nach MySQL-Daten löschen MySQL-Update-Daten MySQL-Limit-Daten

PHP- XML

PHP-XML-Parser PHP-SimpleXML-Parser PHP SimpleXML - Get PHP-XML-Expat PHP-XML-DOM

PHP -AJAX

AJAX-Einführung AJAX-PHP AJAX-Datenbank AJAX-XML AJAX Live-Suche AJAX-Umfrage

PHP- Beispiele

PHP-Beispiele PHP-Compiler PHP-Quiz PHP-Übungen PHP-Zertifikat

PHP- Referenz

PHP-Übersicht PHP-Array PHP-Kalender PHP-Datum PHP-Verzeichnis PHP-Fehler PHP-Ausnahme PHP-Dateisystem PHP-Filter PHP-FTP PHP-JSON PHP-Schlüsselwörter PHP-Libxml PHP-Mail PHP-Mathematik PHP-Sonstiges PHP MySQLi PHP-Netzwerk PHP-Ausgabesteuerung PHP-RegEx PHP-SimpleXML PHP-Stream PHP-String Umgang mit PHP-Variablen PHP-XML-Parser PHP-Zip PHP-Zeitzonen

PHP- Crypt()- Funktion


❮ PHP-String-Referenz

Definition und Verwendung

Die Funktion crypt() gibt eine gehashte Zeichenfolge mit DES-, Blowfish- oder MD5-Algorithmen zurück.

Diese Funktion verhält sich auf verschiedenen Betriebssystemen unterschiedlich. PHP prüft, welche Algorithmen verfügbar sind und welche Algorithmen verwendet werden sollen, wenn es installiert wird.

Der Salt-Parameter ist optional. Allerdings erzeugt crypt() ohne das Salt ein schwaches Passwort. Achten Sie darauf, ein ausreichend starkes Salz für eine bessere Sicherheit anzugeben.

Es gibt einige Konstanten, die zusammen mit der Funktion crypt() verwendet werden. Der Wert dieser Konstanten wird von PHP bei der Installation festgelegt.

Konstanten:

  • [CRYPT_STD_DES] – Standard-Hash auf DES-Basis mit zwei Zeichen Salt aus dem Alphabet „./0-9A-Za-z“. Die Verwendung ungültiger Zeichen im Salt führt dazu, dass diese Funktion fehlschlägt.
  • [CRYPT_EXT_DES] – Erweiterter DES-basierter Hash mit einem Salt aus neun Zeichen, bestehend aus einem Unterstrich, gefolgt von 4 Byte Iterationszähler und 4 Byte Salt. Diese sind als druckbare Zeichen kodiert, 6 Bit pro Zeichen, niedrigstwertiges Zeichen zuerst. Die Werte 0 bis 63 werden als „./0-9A-Za-z“ kodiert. Die Verwendung ungültiger Zeichen im Salt führt dazu, dass die Funktion fehlschlägt.
  • [CRYPT_MD5] – MD5-Hashing mit einem 12-stelligen Salt, beginnend mit $1$
  • [CRYPT_BLOWFISH] – Blowfish-Hashing mit einem Salt, das mit $2a$, $2x$ oder $2y$ beginnt, einem zweistelligen Kostenparameter „$“ und 22 Zeichen aus dem Alphabet „./0-9A-Za-z“ . Die Verwendung von Zeichen außerhalb des Alphabets führt dazu, dass diese Funktion eine Zeichenfolge der Länge Null zurückgibt. Der Parameter "$" ist der Basis-2-Logarithmus der Iterationsanzahl für den zugrunde liegenden Blowfish-Bash-Hash-Algorithmus und muss im Bereich 04-31 liegen. Werte außerhalb dieses Bereichs führen zum Fehlschlagen der Funktion.
  • [CRYPT_SHA_256] – SHA-256-Hash mit einem 16-stelligen Salt, beginnend mit $5$. Wenn der Salt-String mit „rounds=<N>$“ beginnt, wird der numerische Wert von N verwendet, um anzugeben, wie oft die Hashing-Schleife ausgeführt werden soll, ähnlich wie der Kostenparameter bei Blowfish. Die Standardanzahl der Runden ist 5000, es gibt ein Minimum von 1000 und ein Maximum von 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-stelligen Salt, beginnend mit $6$. Wenn der Salt-String mit „rounds=<N>$“ beginnt, wird der numerische Wert von N verwendet, um anzugeben, wie oft die Hashing-Schleife ausgeführt werden soll, ähnlich wie der Kostenparameter bei Blowfish. Die Standardanzahl der Runden ist 5000, es gibt ein Minimum von 1000 und ein Maximum von 999.999.999. Jede Auswahl von N außerhalb dieses Bereichs wird auf die nächste Grenze abgeschnitten.

Auf Systemen, auf denen diese Funktion mehrere Algorithmen unterstützt, werden die obigen Konstanten auf „1“ gesetzt, wenn sie unterstützt werden, und ansonsten auf „0“.

Hinweis: Es gibt keine Entschlüsselungsfunktion. Die Funktion crypt() verwendet einen Einwegalgorithmus.


Syntax

crypt(str,salt)

Parameterwerte

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


Technische Details

Rückgabewert: Gibt die codierte Zeichenfolge oder eine Zeichenfolge zurück, die kürzer als 13 Zeichen ist und sich bei einem Fehler garantiert vom Salt unterscheidet
PHP-Version: 4+
Änderungsprotokoll: PHP 5.6.0 - Zeigt eine E_NOTICE-Sicherheitswarnung an, wenn Salt weggelassen wird.
PHP 5.3.7 - Blowfish-Modi $2x$ und $2y$ hinzugefügt.
PHP 5.3.2 - SHA-256 und SHA-512 hinzugefügt. Behobenes Blowfish-Verhalten bei ungültigen Runden gibt „failure“-Zeichenfolge („*0“ oder „*1“) zurück, anstatt auf DES zurückzugreifen.
PHP 5.3.0 - PHP enthält jetzt eine eigene Implementierung für MD5-Crypt, Standard-DES, Extended-DES und die Blowfish-Algorithmen und wird diese verwenden, wenn das System einen oder mehrere der Algorithmen nicht unterstützt.

Mehr Beispiele

Beispiel

In diesem Beispiel testen wir die verschiedenen 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 $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.";
}
?>

Die Ausgabe des obigen Codes könnte sein (je nach Betriebssystem):

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