La fonction crypte() renvoie une chaîne chiffrée utilisant le DES, le Blowfish, ou les algorithmes MD5, ou bien un des algorithmes disponibles sur la machine.
(PHP 4+)
crypt — Hachage à sens unique (indéchiffrable)
La fonction crypte() renvoie une chaîne chiffrée utilisant le DES, le Blowfish, ou les algorithmes MD5, ou bien un des algorithmes disponibles sur la machine.
Certains systèmes supportent plus d'un type de hachage. En fait, il arrive que le chiffrement DES standard soit remplacé par un algorithme de chiffrement MD5. Le choix du type de hachage est effectué en se basant sur la valeur du salt. À l'installation, PHP détermine les possibilités de la fonction crypt(), et acceptera des salt pour d'autres types de chiffrements. Si aucun salt n'est fourni, PHP va en générer deux caractères (DES), à moins que le système par défaut soit MD5, auquel cas un salt compatible MD5 sera généré. PHP définit une constante appelée CRYPT_SALT_LENGTH permettant de vous indiquer la longueur du salt disponible pour le système de hachage utilisé.
crypt(), lorsqu'elle est utilisée avec le chiffrement standard DES, retourne le salt dans les deux premiers caractères de la chaîne retournée. Elle n'utilise que les 8 premiers caractères de str, ce qui fait que toutes les chaînes plus longues, qui ont les mêmes premiers 8 octets retourneront le même résultat (tant que le salt est toujours le même).
Sur les systèmes où crypt() supporte plusieurs types de hachages, les constantes suivantes sont mises à 0 ou 1, suivant que le type correspondant est disponible :
Constantes :
crypt(str,salt)
Paramètre | Description |
---|---|
Str | Requis. Spécifie la chaîne à coder |
salt | Facultatif. Une chaîne employée pour augmenter le nombre de caractères codés, pour rendre le codage plus bloqué. Si l'argument de sel n'est pas fourni, il sera aléatoirement choisi par le PHP chaque fois que vous appelez cette fonction. |
Il n'y a aucune fonction de déchiffrage. La fonction crypte () emploie un algorithme à sens unique.
Valeur de retour | Renvoie la chaîne encodée ou une chaîne de moins de 13 caractères dont la différence avec le salt est garantie en cas d'échec. |
Version PHP | 4+. |
Historique des modifications |
php 8.0 + : La fonction crypt() est largement remplacée par la fonction password_hash() et fournit des valeurs par défaut sécurisées. Le fait de ne pas passer de salt de mot de passe à la fonction fait que PHP en génère un, mais pour des raisons historiques, ce salt n'est pas sécurisé par les standards de sécurité actuels. De plus, le salt devait adhérer à certains schémas pour basculer certains mécanismes de hachage. A partir de PHP 5.6.0 - Affiche un avertissement de sécurité E_NOTICE si salt est omis. PHP 5.3.7 - Ajout des modes Blowfish $2x$ et $2y$. PHP 5.3.2 - Ajout de SHA-256 et SHA-512. Correction du comportement de Blowfish en cas de rounds invalides, qui retourne une chaîne "failure" ("*0" ou "*1"), au lieu de revenir à DES. PHP 5.3.0 - PHP contient maintenant sa propre implémentation pour les algorithmes MD5 crypt, Standard DES, Extended DES et Blowfish et l'utilisera si le système ne supporte pas un ou plusieurs de ces algorithmes. . |
Dans cet exemple nous examinerons l’utilisation de crypt() avec différents types de chiffrement
Sélectionner le code
<?php
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt("j'aime PHP")."\n<br />";
}
else
{
echo "Standard DES n'est pas supporté.\n<br />";
}
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES: ".crypt("j'aime PHP")."\n<br />";
}
else
{
echo "Extended DES n'est pas supporté.\n<br />";
}
if (CRYPT_MD5 == 1)
{
echo "MD5: ".crypt("j'aime PHP")."\n<br />";
}
else
{
echo "MD5 n'est pas supporté.\n<br />";
}
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt("j'aime PHP");
}
else
{
echo "Blowfish DES n'est pas supporté.";
}
?>
Exemple avec crypt()
Sélectionner le code
<?php
// laissons le salt initialisé par PHP
$password = crypt('mypassword');
/*
Il vaut mieux passer le résultat complet de crypt() comme salt nécessaire
pour le chiffrement du mot de passe, pour éviter les problèmes entre les
algorithmes utilisés (comme nous le disons ci-dessus, le chiffrement
standard DES utilise un salt de 2 caractères, mais un chiffrement
MD5 utilise un salt de 12).
*/
if (crypt($user_input, $password) == $password) {
echo "Mot de passe correct !";
}
?>
Utilisation de crypt() avec htpasswd
Sélectionner le code
<?php
// Définition du mot de passe
$password = 'mypassword';
// Récupération du hash, on laisse le salt se générer automatiquement
$hash = crypt($password);
echo $hash;
?>
Fonction precedente: |
Fonction suivante: |
Livre numérique court pour comprendre la méthode secrète permettant d'obtenir des likes sans fin sur Facebook.
GAGNER DE L'ARGENT