Die Funktion crypt() gibt eine mit dem DES-, Blowfish- oder MD5-Algorithmus verschlüsselte Zeichenfolge zurück.
Diese Funktion verhält sich auf verschiedenen Betriebssystemen unterschiedlich und einige Betriebssysteme unterstützen mehr als einen Algorithmustyp. Bei der Installation prüft PHP, welche Algorithmen verfügbar sind und welche Algorithmen verwendet werden.
Der genaue Algorithmus hängt vom Format und der Länge des Salt-Arguments ab. Salt kann die Verschlüsselung sicherer machen, indem es die Anzahl der aus einem bestimmten String mit einer bestimmten Verschlüsselungsmethode generierten Strings erhöht.
Hier sind einige Konstanten, die mit der Funktion crypt() verwendet werden. Diese konstanten Werte werden von PHP während der Installation festgelegt.
Konstante:
[CRYPT_SALT_LENGTH] – Standardverschlüsselungslänge. Verwenden Sie die Standard-DES-Verschlüsselung, Länge 2
[CRYPT_STD_DES] – Standard-DES-basierte Verschlüsselung mit einem zweistelligen Salt aus dem Alphabet „./0-9A-Za-z“. Die Verwendung ungültiger Zeichen in Salt führt zum Fehlschlagen der Funktion.
[CRYPT_EXT_DES] – Erweiterte DES-basierte Verschlüsselung mit einem 9-stelligen Salt, bestehend aus einem Unterstrich, gefolgt von einer 4-Byte-Iterationsnummer und einem 4-Byte-Salt. Diese werden als druckbare Zeichen codiert, 6 Bit pro Zeichen, das niedrigstwertige Zeichen zuerst. Die Werte 0 bis 63 werden als „./0-9A-Za-z“ kodiert. Die Verwendung ungültiger Zeichen in Salt führt zum Fehlschlagen der Funktion.
[CRYPT_MD5] – MD5-Verschlüsselung mit einem 12-stelligen Salt, beginnend mit $1$.
[CRYPT_BLOWFISH] – Blowfish-Verschlüsselung hat einen Salt, der mit $2a$, $2x$ oder $2y$ beginnt, einen zweistelligen Kostenparameter „$“ und aus dem Alphabet „./0-9A-Za-z“ 22 Zeichen In . Die Verwendung von Zeichen außerhalb des Alphabets führt dazu, dass die Funktion eine Zeichenfolge der Länge Null zurückgibt. Der Parameter „$“ ist der Logarithmus zur Basis 2 der Anzahl der Iterationen des Blowfish-Hashing-Algorithmus und muss im Bereich von 04 bis 31 liegen. Werte außerhalb dieses Bereichs führen zum Fehlschlagen der Funktion.
[CRYPT_SHA_256] – Die SHA-256-Verschlüsselung hat ein 16-stelliges Salt, beginnend mit $5$. Wenn die Salt-Zeichenfolge mit „rounds=<N>$“ beginnt, wird der numerische Wert von N verwendet, um die Anzahl der Ausführungen der Hash-Runde darzustellen, ähnlich dem Kostenparameter in Blowfish. Die Standardanzahl der Zyklen beträgt 5000, der Mindestwert 1000 und der Höchstwert 999.999.999. Jeder Wert von N außerhalb dieses Bereichs wird in den nächstgelegenen Grenzwert umgewandelt.
[CRYPT_SHA_512] – Die SHA-512-Verschlüsselung hat ein 16-stelliges Salt, beginnend mit $6$. Wenn die Salt-Zeichenfolge mit „rounds=<N>$“ beginnt, wird der numerische Wert von N verwendet, um die Anzahl der Ausführungen der Hash-Runde darzustellen, ähnlich dem Kostenparameter in Blowfish. Die Standardanzahl der Zyklen beträgt 5000, der Mindestwert 1000 und der Höchstwert 999.999.999. Jeder Wert von N außerhalb dieses Bereichs wird in den nächstgelegenen Grenzwert umgewandelt.
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“.
Hinweis: Es gibt keine entsprechende Entschlüsselungsfunktion. Die Funktion crypt() verwendet einen Einwegalgorithmus.
crypt( str, salt )
Parameter | beschreiben |
---|---|
str | Erforderlich. Gibt die zu kodierende Zeichenfolge an. |
Salz | Optional. Eine Zeichenfolge, mit der die Anzahl der kodierten Zeichen erhöht wird, um die Kodierung sicherer zu machen. Wenn kein Salt-Argument angegeben wird, wird eines bei jedem Aufruf der Funktion zufällig generiert. |
Rückgabewert: | Gibt eine verschlüsselte Zeichenfolge oder im Fehlerfall eine Zeichenfolge mit weniger als 13 Zeichen zurück, die sich garantiert vom Salt unterscheidet. |
---|---|
PHP-Version: | 4+ |
Protokoll aktualisieren: | In PHP 5.3.7 wurden die Blowfish-Modi $2x$ und $2y$ hinzugefügt, um potenzielle Angriffe auf hoher Ebene abzuwehren. In PHP 5.3.2 wurden die neuen Konstanten SHA-256 und SHA-512 hinzugefügt. Ab PHP 5.3.2 gibt Blowfish bei ungültigen Schleifen die Zeichenfolge „failure“ („*0“ oder „*1“) zurück, anstatt auf DES zurückzugreifen. Seit PHP 5.3.0 verfügt PHP über eine MD5-Verschlüsselungsimplementierung, eine Standard-DES-Implementierung, eine erweiterte DES-Implementierung und einen Blowfish-Algorithmus. Wenn das System den oben genannten Algorithmus nicht unterstützt, wird der PHP-eigene Algorithmus verwendet. |
Verwenden Sie htpasswd für die crypt()-Verschlüsselung:
<?php // Passwort festlegen $password = ' mypassword ' ; // Hash-Wert abrufen, automatischen Salt-Wert verwenden $hash = crypt ( $password ) ; >In diesem Beispiel verwenden wir verschiedene Hash-Typen:
<?php Wenn ( CRYPT_STD_DES == 1 ) { Echo ' Standard DES : ' . crypt ( ' rasmuslerdorf ' , ' rl ' ) . Wenn ( CRYPT_EXT_DES == 1 ) { Echo ' Extended DES : ' . crypt ( ' rasmuslerdorf ' , ' _J9..rasm ' ) . Wenn ( CRYPT_MD5 == 1 ) { Echo ' MD5 : ' . crypt ( ' rasmuslerdorf ' , ' $ 1 $ rasmusle $ ' ) ; Wenn ( CRYPT_BLOWFISH == 1 ) { Echo ' Blowfish: ' . crypt ( ' rasmuslerdorf ' , ' $ 2a $ 07 $usesomesillystringforsalt $ ' ) . Wenn ( CRYPT_SHA256 == 1 ) { Echo ' SHA-256: ' . crypt ( ' rasmuslerdorf ' , ' $ 5$ rounds = 5000 $ usesomesillystringforsalt $ ' ) Wenn ( CRYPT_SHA512 == 1 ) { Echo ' SHA-512: ' . crypt ( ' rasmuslerdorf ' , ' $ 6 $ rounds = 5000 $usesomesillystringforsalt $ ' ) ?>Der obige Code gibt Folgendes aus (abhängig vom Betriebssystem):
Standard-DES: rl.3StKT.4T8MExtended DES: _J9..rasmBYk8r9AiWNcMD5: $1$rasmusle$rISCgZzpwk3UhDidwXvin0Blowfish: $2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hiSHA-256: $5$rounds=5000$usesomesillystri$KqJWpanXZHKq2BOB43TSaYheWsQ1Lr5QNyPCDH/Tp.6SHA-512: $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21