La fonction crypt() renvoie une chaîne chiffrée à l'aide de l'algorithme DES, Blowfish ou MD5.
Cette fonction se comporte différemment selon les systèmes d'exploitation, et certains systèmes d'exploitation prennent en charge plusieurs types d'algorithmes. Au moment de l'installation, PHP vérifie quels algorithmes sont disponibles et quels algorithmes sont utilisés.
L'algorithme exact dépend du format et de la longueur de l'argument salt. Salt peut rendre le chiffrement plus sécurisé en augmentant le nombre de chaînes générées à partir d'une chaîne spécifique avec une méthode de chiffrement spécifique.
Voici quelques constantes utilisées avec la fonction crypt(). Ces valeurs constantes sont définies par PHP lors de l'installation.
constante:
[CRYPT_SALT_LENGTH] - Longueur de cryptage par défaut. Utiliser le cryptage DES standard, longueur 2
[CRYPT_STD_DES] - Cryptage standard basé sur DES avec un sel à 2 caractères de l'alphabet "./0-9A-Za-z". L'utilisation de caractères non valides dans salt entraînera l'échec de la fonction.
[CRYPT_EXT_DES] - Chiffrement étendu basé sur DES avec un sel de 9 caractères composé d'un trait de soulignement, suivi d'un numéro d'itération de 4 octets et d'un sel de 4 octets. Ceux-ci sont codés sous forme de caractères imprimables, 6 bits par caractère, le caractère le moins significatif en premier. Les valeurs 0 à 63 sont codées sous la forme "./0-9A-Za-z". L'utilisation de caractères non valides dans salt entraînera l'échec de la fonction.
[CRYPT_MD5] - Cryptage MD5 avec un sel de 12 caractères commençant par $1$.
[CRYPT_BLOWFISH] - Le cryptage Blowfish a un sel commençant par $2a$, $2x$ ou $2y$, un paramètre de coût à deux chiffres "$" et de l'alphabet "./0-9A-Za-z" 22 caractères dans . L’utilisation de caractères en dehors de l’alphabet entraînera le renvoi par la fonction d’une chaîne de longueur nulle. Le paramètre "$" est le logarithme en base 2 du nombre d'itérations de l'algorithme de hachage Blowfish et doit être compris entre 04 et 31. Les valeurs en dehors de cette plage entraîneront l'échec de la fonction.
[CRYPT_SHA_256] - Le cryptage SHA-256 a un sel de 16 caractères, commençant par 5$. Si la chaîne salt commence par "rounds=<N>$", la valeur numérique de N est utilisée pour représenter le nombre de fois que le tour de hachage est exécuté, similaire au paramètre de coût dans Blowfish. Le nombre de cycles par défaut est de 5 000, la valeur minimale est de 1 000 et la valeur maximale est de 999 999 999. Toute valeur de N en dehors de cette plage sera convertie en la valeur limite la plus proche.
[CRYPT_SHA_512] - Le cryptage SHA-512 comporte un sel de 16 caractères, à partir de 6 $. Si la chaîne salt commence par "rounds=<N>$", la valeur numérique de N est utilisée pour représenter le nombre de fois que le tour de hachage est exécuté, similaire au paramètre de coût dans Blowfish. Le nombre de cycles par défaut est de 5 000, la valeur minimale est de 1 000 et la valeur maximale est de 999 999 999. Toute valeur de N en dehors de cette plage sera convertie en la valeur limite la plus proche.
Sur les systèmes où cette fonction prend en charge plusieurs algorithmes, les constantes ci-dessus sont définies sur « 1 » si elles sont prises en charge et sur « 0 » dans le cas contraire.
Remarque : Il n'existe pas de fonction de décryptage correspondante. La fonction crypt() utilise un algorithme unidirectionnel.
crypte( str,sel )
paramètre | décrire |
---|---|
str | Requis. Spécifie la chaîne à encoder. |
sel | Facultatif. Chaîne utilisée pour augmenter le nombre de caractères codés afin de rendre le codage plus sécurisé. Si aucun argument salt n'est fourni, un sera généré aléatoirement à chaque appel de la fonction. |
Valeur de retour : | Renvoie une chaîne chiffrée, ou en cas d'échec, une chaîne de moins de 13 caractères garantie différente du sel. |
---|---|
Version PHP : | 4+ |
Journal de mise à jour : | Dans PHP 5.3.7, les modes Blowfish $2x$ et $2y$ ont été ajoutés pour faire face aux attaques potentielles de haut niveau. Dans PHP 5.3.2, les nouvelles constantes SHA-256 et SHA-512 ont été ajoutées. Depuis PHP 5.3.2, Blowfish renverra la chaîne "échec" ("*0" ou "*1") sur les boucles invalides au lieu de revenir à DES. Depuis PHP 5.3.0, PHP est livré avec une implémentation du cryptage MD5, une implémentation DES standard, une implémentation DES étendue et l'algorithme Blowfish. Si le système ne prend pas en charge l'algorithme ci-dessus, le propre algorithme de PHP sera utilisé. |
Utilisez htpasswd pour le cryptage crypt() :
<?php // Définir le mot de passe $password = ' mypassword ' ; // Récupère la valeur de hachage, utilise la valeur salt automatique $hash = crypte ( $mot de passe ) ? >Dans cet exemple, nous utilisons différents types de hachage :
<?php si ( CRYPT_STD_DES == 1 ) { écho ' DES standard : ' . crypte ( ' rasmuslerdorf ' , ' rl ' ) . si ( CRYPT_EXT_DES == 1 ) { écho ' DES étendu : ' . crypte ( ' rasmuslerdorf ' , ' _J9..rasm ' ) ' n " } si ( CRYPT_MD5 == 1 ) { écho ' MD5 : ' . crypte ( ' rasmuslerdorf ' , ' $ 1 $ rasmusle$ ' ) ' n " } si ( CRYPT_BLOWFISH == 1 ) { écho ' Blowfish : ' . crypte ( ' rasmuslerdorf ' , ' $ 2a $ 07$usesomesillystringforsalt$ ' ) " n " } si ( CRYPT_SHA256 == 1 ) { écho ' SHA-256 : ' . crypte ( ' rasmuslerdorf ' , ' $5$ rounds = 5000$usesomesillystringforsalt$ ' ) " n " } si ( CRYPT_SHA512 == 1 ) { écho ' SHA-512 : ' . crypte ( ' rasmuslerdorf ' , ' $6$ rounds = 5000$usesomesillystringforsalt$ ' ) " n " } ?>Le code ci-dessus génère ce qui suit (selon le système d'exploitation) :
DES standard : rl.3StKT.4T8MEDES étendu : _J9..rasmBYk8r9AiWNcMD5 : $1$rasmusle$rISCgZzpwk3UhDidwXvin0Blowfish : $2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hiSHA-256 : $5$rounds=5000$usesomesillystri$KqJWpanXZHKq2BOB43TSaYhEWsQ1Lr5QNyPCDH/Tp.6SHA-512 : $6$tours=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mO.ChWQW21