Derniers tutoriels de développement web
 

PHP crypt() Function


<PHP chaîne de référence

Définition et utilisation

La crypt() renvoie une chaîne hachée en utilisant des algorithmes DES, Blowfish ou MD5.

Cette fonction se comporte sur différents systèmes d'exploitation différents. PHP vérifie quels algorithmes sont disponibles et quels algorithmes à utiliser lorsqu'il est installé.

Le paramètre sel est facultatif. Cependant, la crypt() crée un mot de passe faible sans le sel. Assurez-vous de spécifier un sel assez fort pour une meilleure sécurité.

Il y a quelques constantes qui sont utilisées en même temps que la crypt() fonction. La valeur de ces constantes sont définies par PHP quand il est installé.

constantes:

  • [CRYPT_STD_DES] - hachage à base DES standard avec deux sel de caractères de l'alphabet "./0-9A-Za-z" . En utilisant des caractères non valides dans le sel provoque cette fonction à l'échec.
  • [CRYPT_EXT_DES] - Extended hachage base-DES avec un sel de neuf caractères, constitué d'un trait de soulignement suivi de 4 octets de nombre d'itérations et 4 octets de sel. Celles-ci sont codées sous forme de caractères imprimables, 6 bits par caractère, caractère moins significatif en premier. Les valeurs de 0 à 63 sont codées comme "./0-9A-Za-z" . En utilisant des caractères non valides dans le sel, la fonction va échouer.
  • [CRYPT_MD5] - hachage MD5 avec un sel de 12 caractères commençant par $ 1 $
  • [Crypt_blowfish] - hashing Blowfish avec un sel à partir de $ 2a $, 2x $ $, ou $ $, 2J un deux paramètres de coût de chiffres "$" , et 22 caractères de l'alphabet "./0-9A-Za-z" . En utilisant des caractères en dehors de l'alphabet provoquera cette fonction pour retourner une chaîne de longueur nulle. Le "$" paramètre est le logarithme en base 2 du nombre d'itérations pour le hachage Blowfish défoncé sous - jacente algorithmeter et doit être à portée 04-31. Les valeurs en dehors de cette plage, la fonction à l'échec.
  • [CRYPT_SHA_256] - hachage SHA-256 avec un sel de 16 caractères à partir de 5 $ $. Si la chaîne de sel commence par "rounds=<N>$" , la valeur numérique de N est utilisé pour indiquer combien de fois la boucle de hachage doit être exécutée, tout comme le paramètre de coût sur Blowfish. Le nombre par défaut de tours est de 5000, il y a un minimum de 1 000 et un maximum de 999.999.999. Toute sélection de N en dehors de cette plage sera tronquée à la limite la plus proche.
  • [CRYPT_SHA_512] - hachage SHA-512 avec un sel à partir de 16 caractères avec 6 $. Si la chaîne de sel commence par "rounds=<N>$" , la valeur numérique de N est utilisé pour indiquer combien de fois la boucle de hachage doit être exécutée, tout comme le paramètre de coût sur Blowfish. Le nombre par défaut de tours est de 5000, il y a un minimum de 1 000 et un maximum de 999.999.999. Toute sélection de N en dehors de cette plage sera tronquée à la limite la plus proche.

Sur les systèmes où cette fonction prend en charge plusieurs algorithmes, les constantes ci - dessus sont réglées sur "1" si elle est soutenue et "0" autrement.

Note: Il n'y a pas de fonction de déchiffrement. La crypt() fonction utilise un algorithme à sens unique .


Syntaxe

crypt( str,salt )

Paramètre La description
str Champs obligatoires. Indique la chaîne à hashed
salt Optionnel. Une chaîne de sel de baser le hachage sur

Détails techniques

Valeur de retour: Renvoie la chaîne codée ou une chaîne qui est plus courte que 13 caractères et est garanti pour différer le sel en cas d'échec
PHP Version: 4+
changelog: 2x $ $ et 2y $ modes $ Blowfish ont été ajoutés en PHP 5.3.7 pour faire face aux attaques de bit haut potentiel.

Les constantes SHA-256 et SHA-512 ont été ajoutés en PHP 5.3.2.

PHP 5.3.2, le comportement Blowfish sur tours invalides renvoie le "failure" string ("*0" or "*1") , au lieu de retomber à DES.

PHP 5.3.0, PHP contient sa propre implémentation de la crypte MD5, Standard DES, DES étendues et les algorithmes Blowfish et utilisera que si le système manque de soutien à l'un ou plusieurs des algorithmes.

Exemple

Exemple 1

Dans cet exemple, nous allons tester les différents algorithmes:

<?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 $5$. 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.";
}
?>

La sortie du code ci - dessus pourrait être (depending on the operating system) en (depending on the operating system) :

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 chaîne de référence