English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP Grundlagenanleitung

PHP Fortgeschrittene Anleitung

PHP & MySQL

PHP Referenzhandbuch

PHP crypt() Funktion: Verwendung und Beispiel

PHP String Zeichenfolgenfunktionen Handbuch

Die crypt()-Funktion wird verwendet, um einen unidirektionalen String-Hash zurückzugeben

Syntax

string crypt ( string $str [, string $salt ] )

Definition und Verwendung

 crypt() gibt eine Hash-String zurück, der auf dem Standard UNIX DES-Algorithmus oder einem anderen verfügbaren Ersatzalgorithmus auf dem System basiert.
Der Salzparameter ist optional. Ohne Salz jedoch erstellt crypt() ein schwaches Passwort. php 5.6und späteren Versionen wirft ohne diese eine E_NOTICE-Stufe Fehler aus. Um eine bessere Sicherheit zu gewährleisten, stellen Sie sicher, dass ein ausreichend starker Salzwert angegeben wird.
password_hash() verwendet einen starken Hash-Algorithmus, um starke Salzwerte zu erzeugen und führt automatisch die angemessenen Runden aus. password_hash() ist eine einfache Umhüllung von crypt() und vollständig mit bestehenden Passwort-Hashes kompatibel. Es wird empfohlen, password_hash() zu verwenden.
Einige Systeme unterstützen nicht nur eine Hash-Typ. Tatsächlich, manchmal, basierend auf MD5 Algorithmus wird verwendet, um den Algorithmus basierend auf dem Standard DES zu ersetzen. Dieser Hash-Typ wird durch den Salzparameter ausgelöst. Auf 5.3 vor der Installation von PHP entscheidet das System basierend auf crypt() darüber, welche Algorithmen verfügbar sind. Wenn kein Salzwert angegeben wird, generiert PHP automatisch einen 2 Zeichen (DES) oder 12 Zeichen (MD5Salzwerte abhängt von MD5 Verfügbarkeit von crypt(). PHP hat eine Konstante namens CRYPT_SALT_LENGTH definiert, um die maximale Länge des verfügbaren Salzes für zulässige Hashes anzuzeigen.
Das crypt() basierend auf dem Standard DES-Algorithmus gibt am Anfang des Ausgabeinhalts zwei Zeichen lange Salzwerte zurück. Es verwendet auch nur den Anfang 8 Zeichen, daher wird ein längerer 8 zeichen langen Strings wird dasselbe Ergebnis erzeugt (wenn der gleiche Salzwert verwendet wird).
Auf Systemen, die das crypt()-Funktion mehrfache Hash-Funktionen unterstützen, werden die folgenden Konstanten gemäß der Verfügbarkeit der entsprechenden Typen auf 0 oder 1:

  • CRYPT_STD_DES - basierend auf dem Standard DES-Algorithmen Hash verwendet "./0-9A-Za-z" zwei Zeichen als Salz. Die Verwendung ungültiger Zeichen im Salz führt dazu, dass crypt() fehlschlägt.

  • CRYPT_EXT_DES - erweiterter basierend auf DES-Algorithmen Hash. Der Salzwert ist 9 von Zeichenkette, die aus 1 von Unterstrichen gefolgt 4 Zyklusdauer und 4 Byte Salz bestehen. Sie werden in druckbare Zeichen codiert, jeder Zeichen 6 Bit, die wenigsten gültigen Bits haben Vorrang. 0 bis 63 /0-9A-Za-z"

  • CRYPT_MD5 - MD5 Hash verwendet einen mit $1$ 12 Zeichenkette Salz.

  • CRYPT_BLOWFISH - Blowfish Algorithmus verwendet den folgenden Salzwert: "2a$", einem zweistelligen cost-Parameter, "$" und 64 von "."/0-9A-Za-z" aus den Zeichenkombinationen besteht. Die Verwendung von Zeichen außerhalb dieses Bereichs führt dazu, dass crypt() einen leeren String zurückgibt. Zwei cost-Parameter sind die Zykluszahl in 2 basiert auf dem Logarithmus, sein Bereich ist 04-31verwenden, führt der Überschreitung dieses Bereichs zu einem Fehler von crypt(). PHP 5.3.7 vorher nur "$2a$" als Salzpräfix, PHP 5.3.7 Ab Version 5.1.0 wurden neue Präfixe eingeführt, um ein Sicherheitrisiko in der Blowfish-Implementierung zu korrigieren. Weitere Informationen zu diesem修复 können Sie in diesem Dokument nachlesen. Kürzer gesagt, wenn Entwickler nur für PHP 5.3.7und späteren Versionen entwickelt, sollte "$2y$" anstatt "$"2a$"

  • CRYPT_SHA256 - SHA-256 Algorithmus verwendet einen mit $5$ 16 Zeichenkette Salz für den Hash. Wenn der Salz-String mit "rounds=<N>$" beginnt, wird der numerische Wert von N verwendet, um die Anzahl der Hash-Zyklen auszuführen, was dem Cost-Parameter der Blowfish-Algorithmen ähnlich ist. Die Standard-Zykluszahl ist 5000, das Minimum ist 1000, das Maximum ist 999,999,999. Über diesen Bereich hinaus wird N in den nächsten Wert umgewandelt.

  • CRYPT_SHA512 - SHA-512 Algorithmus verwendet einen mit $6$ 16 Zeichenkette Salz für den Hash. Wenn der Salz-String mit "rounds=<N>$" beginnt, wird der numerische Wert von N verwendet, um die Anzahl der Hash-Zyklen auszuführen, was dem Cost-Parameter der Blowfish-Algorithmen ähnlich ist. Die Standard-Zykluszahl ist 5000, das Minimum ist 1000, das Maximum ist 999,999,999. Über diesen Bereich hinaus wird N in den nächsten Wert umgewandelt.

Rückgabewert

Es gibt die Hash-Zeichenkette zurück

Parameter

NummerParameter und Beschreibung
1

str

Zu verschlüsselnde Zeichenkette

Online-Beispiel

Probieren Sie die folgenden Beispiele aus, crypt() Funktion erhält den Hash-Wert, verwendet automatisch gesalzen:

<?php
      //Setzen Sie das Passwort
   $input = 'information';  
   
   // Erhalten Sie den Hash-Wert, verwenden Sie die automatische Salz-Wert 
   $hash = crypt($input);
?>
Testen Sie es heraus‹/›

PHP String Zeichenfolgenfunktionen Handbuch