Hash et Sécurité

Générateur PHP password_hash()

Exécutez la fonction password_hash() de PHP avec l'algorithme et le coût de votre choix.

Évaluez cet outil

Comment utiliser Générateur PHP password_hash()

  1. Saisissez le mot de passe que vous voulez hacher.
  2. Choisissez l'algorithme — PASSWORD_DEFAULT et PASSWORD_BCRYPT utilisent le facteur de coût ; les options Argon2 l'ignorent.
  3. Cliquez sur Exécuter password_hash() et copiez le hachage obtenu.

À propos de Générateur PHP password_hash()

Ceci est la fonction password_hash() de PHP elle-même, exécutée sur le serveur exactement comme elle le ferait dans votre code. Choisissez l'algorithme via les mêmes constantes utilisées par PHP — PASSWORD_DEFAULT, PASSWORD_BCRYPT, PASSWORD_ARGON2I ou PASSWORD_ARGON2ID — définissez un coût, et vous récupérez la chaîne exacte produite par la fonction, ainsi que le détail que renvoie password_get_info(). C'est le moyen rapide de voir ce que produisent réellement un mot de passe et des paramètres donnés, sans avoir à lancer un script.

Deux choses sont vraies pour chaque hachage ici et méritent d'être comprises. Premièrement, la sortie est salée automatiquement, donc hacher deux fois le même mot de passe donne deux hachages différents — c'est correct, pas un bug, et c'est pourquoi il ne faut jamais comparer des hachages en les recalculant. Vous vérifiez un mot de passe avec password_verify($password, $hash), qui lit le sel et le coût dans le hachage stocké et fait la comparaison pour vous. Deuxièmement, le coût (bcrypt) et les paramètres de mémoire et de temps (Argon2) sont volontairement lents : ils déterminent le coût de chaque essai pour un attaquant, un coût plus élevé est donc plus sûr mais plus lent. Cet outil plafonne bcrypt au coût 12 et utilise des paramètres Argon2 fixes afin qu'un point d'accès public ne puisse pas se transformer en gouffre à CPU.

PASSWORD_DEFAULT correspond à bcrypt dans toutes les versions de PHP à ce jour, mais il est défini comme « ce que PHP considère actuellement comme le meilleur choix », il peut donc changer dans une future version — c'est exactement pourquoi vous stockez l'algorithme à l'intérieur du hachage et laissez password_verify() s'en charger. Pour la plupart des nouveaux projets, Argon2id est la meilleure pratique actuelle. Notez que bcrypt ignore silencieusement tout ce qui dépasse les 72 premiers octets d'un mot de passe, cet outil refuse donc un mot de passe plus long plutôt que d'en hacher une version tronquée. Besoin de vérifier un hachage plutôt que d'en créer un ? Utilisez le vérificateur bcrypt et Argon2, ou comparez les algorithmes avec le générateur Argon2. Les mots de passe sont hachés puis supprimés — jamais journalisés ni stockés.

Questions fréquentes

Quel algorithme dois-je choisir ?

Pour les nouveaux projets, PASSWORD_ARGON2ID est la meilleure pratique actuelle là où votre version de PHP le prend en charge. PASSWORD_DEFAULT est aussi un choix sûr et portable — c'est du bcrypt aujourd'hui et PHP le fait évoluer avec le temps. PASSWORD_BCRYPT simple convient très bien et est universellement disponible.

Pourquoi le même mot de passe donne-t-il un hachage différent à chaque fois ?

Parce que password_hash() génère un nouveau sel aléatoire à chaque appel et le stocke à l'intérieur du résultat. C'est exactement ce que vous voulez — cela empêche deux mots de passe identiques de produire des hachages identiques. Ne comparez jamais des mots de passe en les recalculant ; utilisez password_verify() à la place.

Que fait le facteur de coût ?

Pour bcrypt (et PASSWORD_DEFAULT), il détermine le nombre de tours de calcul que prend chaque hachage — chaque +1 double approximativement le temps. Plus élevé résiste mieux à la force brute mais est plus lent à calculer. Les options Argon2 ignorent ce coût et utilisent à la place des paramètres fixes de mémoire et de temps.

Comment vérifier un mot de passe par rapport à l'un de ces hachages plus tard ?

Appelez password_verify($password, $hash). Elle lit l'algorithme, le sel et le coût dans le hachage stocké et renvoie true ou false. Vous n'avez pas besoin de connaître ou de stocker l'algorithme séparément — il fait partie de la chaîne de hachage.

Est-il prudent de hacher ici un vrai mot de passe ?

Le mot de passe est envoyé au serveur, haché puis immédiatement supprimé — rien n'est journalisé ni stocké, et la réponse porte un en-tête no-store. Malgré cela, pour un mot de passe réellement utilisé en production, générer le hachage dans votre propre environnement reste toujours le choix le plus prudent.