Générateur de hachage de mot de passe MySQL
Générez un hachage PASSWORD() MySQL 4.1+ pour les serveurs MySQL existants.
Comment utiliser Générateur de hachage de mot de passe MySQL
- Saisissez ou collez le mot de passe dans le champ.
- Le hachage à 41 caractères s'affiche au fur et à mesure, précédé d'un astérisque.
- Copiez-le directement dans votre ligne mysql.user existante.
À propos de Générateur de hachage de mot de passe MySQL
Ceci est la fonction PASSWORD() de MySQL telle qu'elle fonctionne depuis MySQL 4.1. L'algorithme est SHA-1 appliqué deux fois — SHA1(SHA1(mot_de_passe)) sur les octets bruts — le résultat étant écrit en hexadécimal majuscule précédé d'un astérisque, ce qui donne 41 caractères au total. L'astérisque ne fait pas partie du condensé ; c'est un marqueur indiquant à MySQL qu'il s'agit du format de l'ère 4.1, et non du hachage plus court à 16 caractères qui existait auparavant. Si vous voulez voir la primitive sous-jacente seule, notre générateur SHA-1 effectue une seule passe.
Notez ce qui manque : il n'y a pas de sel. Deux comptes ayant le même mot de passe obtiennent la même chaîne à 41 caractères, et SHA-1 est rapide, si bien que ce format offre très peu de résistance à un attaquant qui dispose de votre table mysql.user. MySQL le sait — PASSWORD() a été dépréciée dans MySQL 5.7 et totalement supprimée dans MySQL 8.0, qui utilise caching_sha2_password comme plugin d'authentification par défaut à la place.
Le cas d'usage honnête est donc historique : vous travaillez avec un ancien serveur, ou vous devez définir directement une ligne mysql.user plutôt que de passer par SET PASSWORD, ou vous migrez des comptes depuis un système qui stocke encore ces valeurs. Tout cela est légitime. Ce que vous ne devriez pas faire, c'est emprunter ce format pour les mots de passe de votre propre application — il est non salé, rapide et déprécié par son propre éditeur. Utilisez bcrypt à la place.
Questions fréquentes
Pourquoi le hachage commence-t-il par un astérisque ?
L'astérisque marque le format MySQL 4.1+ et le distingue de l'ancien hachage pré-4.1 à 16 caractères. C'est un préfixe, pas une partie du condensé — le hachage lui-même correspond aux 40 caractères hexadécimaux qui suivent, soit 41 au total.
PASSWORD() existe-t-elle encore dans MySQL 8 ?
Non. Elle a été dépréciée dans MySQL 5.7 et supprimée dans MySQL 8.0, qui utilise caching_sha2_password par défaut. Cet outil est destiné aux serveurs existants et aux migrations.
Pourquoi l'absence de sel et la rapidité posent-elles problème ici ?
Sans sel, des mots de passe identiques produisent des hachages identiques dans toute la table, si bien qu'une seule table de correspondance précalculée attaque toute la table à la fois et que les doublons se repèrent d'un coup d'œil. SHA-1 est également extrêmement rapide, donc une table mysql.user volée peut être attaquée à des cadences énormes. Le double hachage ne ralentit pas cela de manière significative.
Puis-je utiliser cela pour les mots de passe des utilisateurs de mon application ?
Merci de ne pas le faire. C'est non salé, rapide et retiré du MySQL moderne. Stockez plutôt des hachages bcrypt ou Argon2 dans une colonne normale.
Mon mot de passe est-il stocké ?
Non. Il est envoyé à notre serveur pour être haché, car les navigateurs ne peuvent pas calculer SHA-1 sous cette forme précise à double passe, puis haché et immédiatement supprimé — jamais journalisé, jamais stocké.

