PHP crypt()Funktionen
PHP-String-Referenzhandbuch
Definition und Verwendung
Die Funktion crypt() gibt eine Zeichenkette zurück, die mit den Algorithmen DES, Blowfish oder MD5 verschlüsselt wurde.
Das Verhalten dieser Funktion unterscheidet sich auf verschiedenen Betriebssystemen, und einige Betriebssysteme unterstützen mehr als einen Algorithmustyp. Während der Installation prüft PHP, welche Algorithmen verfügbar sind und welcher Algorithmus verwendet werden soll.
Der genaue Algorithmus hängt vom Format und der Länge des Parameters salt ab. Salt kann die Verschlüsselung sicherer machen, indem die Anzahl der Zeichenketten erhöht wird, die von einer bestimmten Zeichenkette in Kombination mit einer bestimmten Verschlüsselungsmethode erzeugt werden.
Hier sind einige Konstanten, die mit der Funktion crypt() verwendet werden. Diese Konstantenwerte werden von PHP zum Installationszeitpunkt festgelegt.
Konstanten:
- [CRYPT_SALT_LENGTH] - Standardmäßige Verschlüsselungslänge. Bei standardmäßiger DES-Verschlüsselung beträgt die Länge 2.
- [CRYPT_STD_DES] - Standardmäßige DES-basierte Verschlüsselung hat einen 2 Zeichen langen Salt aus dem Alphabet "./0-9A-Za-z". Die Verwendung ungültiger Zeichen im Salt führt dazu, dass die Funktion fehlschlägt.
- [CRYPT_EXT_DES] - Erweiterte DES-basierte Verschlüsselung hat einen 9 Zeichen langen Salt, bestehend aus 1 Unterstrich, gefolgt von 4 Bytes Iterationsanzahl und 4 Bytes Salt. Diese werden als druckbare Zeichen codiert, 6 Bits pro Zeichen, niedrigstwertiges Zeichen zuerst. Werte 0 bis 63 werden als "./0-9A-Za-z" codiert. Die Verwendung ungültiger Zeichen im Salt führt dazu, dass die Funktion fehlschlägt.
- [CRYPT_MD5] - MD5-Verschlüsselung hat einen 12 Zeichen langen Salt, der mit $1$ beginnt.
- [CRYPT_BLOWFISH] - Blowfish-Verschlüsselung hat einen Salt, der mit $2a$, $2x$ oder $2y$ beginnt, einen zweistelligen Kostenparameter "$" und 22 Zeichen aus dem Alphabet "./0-9A-Za-z". Die Verwendung von Zeichen außerhalb des Alphabets führt dazu, dass die Funktion eine Zeichenkette der Länge 0 zurückgibt. Der Parameter "$" ist der Logarithmus zur Basis 2 der Iterationsanzahl für den Blowfish-basierten Hash-Algorithmus und muss im Bereich 04-31 liegen. Werte außerhalb dieses Bereichs führen dazu, dass die Funktion fehlschlägt.
- [CRYPT_SHA_256] – SHA-256-Verschlüsselung verwendet ein 16 Zeichen langes Salt, das mit $5$ beginnt.Wenn die Salt-Zeichenkette mit "rounds=<N>$" beginnt, wird der numerische Wert von N verwendet, um anzugeben, wie oft die Hashing-Schleife ausgeführt wird, ähnlich wie der Kostenparameter bei Blowfish. Die Standardanzahl der Runden ist 5000, das Minimum ist 1000 und das Maximum ist 999,999,999. Jeder Wert von N außerhalb dieses Bereichs wird auf den nächstgelegenen Grenzwert umgesetzt.
- [CRYPT_SHA_512] – SHA-512-Verschlüsselung verwendet ein 16 Zeichen langes Salt, das mit $6$ beginnt.Wenn die Salt-Zeichenkette mit "rounds=<N>$" beginnt, wird der numerische Wert von N verwendet, um anzugeben, wie oft die Hashing-Schleife ausgeführt wird, ähnlich wie der Kostenparameter bei Blowfish. Die Standardanzahl der Runden ist 5000, das Minimum ist 1000 und das Maximum ist 999,999,999. Jeder Wert von N außerhalb dieses Bereichs wird auf den nächstgelegenen Grenzwert umgesetzt.
Auf Systemen, auf denen diese Funktion mehrere Algorithmen unterstützt, werden die oben genannten Konstanten auf "1" gesetzt, wenn sie unterstützt werden, andernfalls auf "0".
Hinweise:Es gibt keine entsprechende Entschlüsselungsfunktion. Die Funktion crypt() verwendet einen Einweg-Algorithmus.
Syntax
| Parameters | Beschreibung |
|---|---|
| str | Erforderlich. Gibt die zu codierende Zeichenkette an. |
| salt | Optional. Eine Zeichenkette, die verwendet wird, um die Anzahl der codierten Zeichen zu erhöhen und die Codierung sicherer zu machen. Wenn der Parameter salt nicht angegeben wird, wird bei jedem Aufruf der Funktion ein zufälliger Salt erzeugt. |
Technische Details
| Rückgabewert: | Gibt die verschlüsselte Zeichenkette zurück oder, falls dies fehlschlägt, eine Zeichenkette mit weniger als 13 Zeichen, die garantiert vom Salt verschieden ist. |
|---|---|
| PHP-Version: | 4+ |
| Änderungsprotokoll: | In PHP 5.3.7 wurden die Blowfish-Modi $2x$ und $2y$ hinzugefügt, um potenzielle High-Bit-Angriffe zu behandeln. In PHP 5.3.2 wurden die Konstanten SHA-256 und SHA-512 hinzugefügt. Seit PHP 5.3.2 gibt Blowfish bei ungültigen Runden eine "failure"-Zeichenkette ("*0" oder "*1") zurück, anstatt auf DES zurückzugreifen. Seit PHP 5.3.0 enthält PHP eine eigene MD5-Verschlüsselungsimplementierung, eine Standard-DES-Implementierung, eine erweiterte DES-Implementierung und den Blowfish-Algorithmus. Wenn das System die oben genannten Algorithmen nicht unterstützt, wird die von PHP mitgelieferte Algorithmusimplementierung verwendet. |
Beispiele
Beispiel 1
Beispiel 2
Verwendung von htpasswd für crypt()-Verschlüsselung:
Beispiel 1
In diesem Beispiel verwenden wir verschiedene Hash-Typen:
Der obige Code gibt Folgendes aus (abhängig vom Betriebssystem):
Standard DES: rl.3StKT.4T8M Extended DES: _J9..rasmBYk8r9AiWNc MD5: $1$rasmusle$rISCgZzpwk3UhDidwXvin0 Blowfish: $2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi SHA-256: $5$rounds=5000$usesomesillystri$KqJWpanXZHKq2BOB43TSaYhEWsQ1Lr5QNyPCDH/Tp.6 SHA-512: $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21
PHP-String-Referenzhandbuch Weitere Erweiterungen