Tutoriel PHP

ACCUEIL PHP Introduction PHP Installation PHP Syntaxe PHP Commentaires PHP Variables PHP Écho PHP / Impression Types de données PHP Chaînes PHP Numéros PHP Mathématiques PHP Constantes PHP Opérateurs PHP PHP Si... Sinon... Sinon Commutateur PHP Boucles PHP Fonctions PHP Tableaux PHP Superglobales PHP Expression régulière PHP

Formulaires PHP

Gestion des formulaires PHP Validation de formulaire PHP Formulaire PHP requis URL/courriel du formulaire PHP Formulaire PHP terminé

PHP Avancé

Date et heure PHP Inclure PHP Gestion des fichiers PHP Fichier PHP Ouvrir/Lire Création/écriture de fichier PHP Téléchargement de fichier PHP Cookies PHP Séances PHP Filtres PHP Filtres PHP avancés Fonctions de rappel PHP PHPJSON Exception PHP

POO PHP

PHP Qu'est-ce que la POO Classes/Objets PHP Constructeur PHP Destructeur PHP Modificateurs d'accès PHP Héritage PHP Constantes PHP Classes abstraites PHP Interface PHP Caractéristiques PHP Méthodes statiques PHP Propriétés statiques PHP Espaces de noms PHP Itérables PHP

Base de données MySQL

Base de données MySQL Connexion MySQL Créer une base de données MySQL Créer une table MySQL MySQL Insérer des données MySQL obtenir le dernier ID MySQL Insérer plusieurs MySQL préparé MySQL Sélectionner les données MySQL Où Trier MySQL par MySQL Supprimer les données Données de mise à jour MySQL Données de limite MySQL

XML PHP

Analyseurs PHP XML Analyseur PHP SimpleXML PHP SimpleXML - Obtenir Expatriation PHP XML PHP XML DOM

PHP -AJAX

Introduction à AJAX PHP AJAX Base de données AJAX XML AJAX Recherche en direct AJAX Sondage AJAX

Exemples PHP

Exemples PHP Compilateur PHP Questionnaire PHP Exercices PHP Certificat PHP

Référence PHP

Présentation de PHP Tableau PHP Calendrier PHP Date PHP Annuaire PHP Erreur PHP Exception PHP Système de fichiers PHP Filtre PHP FTP PHP PHPJSON Mots clés PHP PHP LibxmlComment Messagerie PHP Mathématiques PHP Divers PHP PHP MySQL Réseau PHP Contrôle de sortie PHP Expression régulière PHP PHP SimpleXML Flux PHP Chaîne PHP Gestion des variables PHP Analyseur PHP XML Code postal PHP Fuseaux horaires PHP

Fonction PHP crypt()


❮ Référence de chaîne PHP

Définition et utilisation

La fonction crypt() renvoie une chaîne hachée à l'aide des algorithmes DES, Blowfish ou MD5.

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

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

Certaines constantes sont utilisées avec la fonction crypt(). La valeur de ces constantes est définie par PHP lors de son installation.

Constantes :

  • [CRYPT_STD_DES] - Hachage standard basé sur DES avec un sel à deux caractères de l'alphabet "./0-9A-Za-z". L'utilisation de caractères non valides dans le sel entraînera l'échec de cette fonction.
  • [CRYPT_EXT_DES] - Hachage basé sur DES étendu avec un sel de neuf caractères composé d'un trait de soulignement suivi de 4 octets de nombre d'itérations et de 4 octets de sel. 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 encodées sous la forme "./0-9A-Za-z". L'utilisation de caractères non valides dans le sel entraînera l'échec de la fonction.
  • [CRYPT_MD5] - Hachage MD5 avec un sel de 12 caractères commençant par $1$
  • [CRYPT_BLOWFISH] - Hachage Blowfish avec un sel commençant par $2a$, $2x$ ou $2y$, un paramètre de coût à deux chiffres "$" et 22 caractères de l'alphabet "./0-9A-Za-z" . L'utilisation de caractères en dehors de l'alphabet entraînera le renvoi par cette fonction d'une chaîne de longueur nulle. Le paramètre "$" est le logarithme en base 2 du nombre d'itérations pour l'algorithme de hachage Blowfish sous-jacent 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] - Hachage SHA-256 avec un sel de 16 caractères commençant par $5$. Si la chaîne de sel commence par "rounds=<N>$", la valeur numérique de N est utilisée pour indiquer combien de fois la boucle de hachage doit être exécutée, un peu comme le paramètre de coût sur Blowfish. Le nombre de tours par défaut est de 5 000, 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 de 16 caractères commençant par $6$. Si la chaîne de sel commence par "rounds=<N>$", la valeur numérique de N est utilisée pour indiquer combien de fois la boucle de hachage doit être exécutée, un peu comme le paramètre de coût sur Blowfish. Le nombre de tours par défaut est de 5 000, 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 définies sur "1" si elles sont prises en charge et sur "0" dans le cas contraire.

Remarque : Il n'y a pas de fonction de décryptage. La fonction crypt() utilise un algorithme unidirectionnel.


Syntaxe

crypt(str,salt)

Valeurs des paramètres

Parameter Description
str Required. Specifies the string to be hashed
salt Optional. A salt string to base the hashing on


Détails techniques

Valeur de retour : Renvoie la chaîne encodée ou une chaîne de moins de 13 caractères et qui est garantie d'être différente du sel en cas d'échec
Version PHP : 4+
Journal des modifications : PHP 5.6.0 - Affiche un avertissement de sécurité E_NOTICE si le sel est omis.
PHP 5.3.7 - Ajout des modes $2x$ et $2y$ Blowfish.
PHP 5.3.2 - Ajout de SHA-256 et SHA-512. Le comportement fixe de Blowfish sur les tours invalides renvoie la chaîne "échec" ("* 0" ou "* 1"), au lieu de revenir à DES.
PHP 5.3.0 - PHP contient désormais sa propre implémentation pour MD5 crypt, Standard DES, Extended DES et les algorithmes Blowfish et l'utilisera si le système ne prend pas en charge un ou plusieurs des algorithmes.

Plus d'exemples

Exemple

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 $6$. 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 (selon le système d'exploitation):

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.


❮ Référence de chaîne PHP