J'ai une valeur bcryptée ($2y$10$zQaDT8hXM4pLmBdwN0xEseda/oKJAQKMKMzUrV8jbs6Epz28BXzBS
) du mot de passe (qwe
). Mais lorsque je vérifie, je me trompe de valeur de hachage.
mysql> select '$2y$10$zQaDT8hXM4pLmBdwN0xEseda/oKJAQKMKMzUrV8jbs6Epz28BXzBS' = encrypt('qwe', '$2y$10$zQaDT8hXM4pLmBdwN0xEseda/oKJAQKMKMzUrV8jbs6Epz28BXzBS') as is_valid;
+----------+
| is_valid |
+----------+
| 0 |
+----------+
select encrypt('qwe', '$2y$10$zQaDT8hXM4pLmBdwN0xEseda/oKJAQKMKMzUrV8jbs6Epz28BXzBS') as hash;
+---------------+
| hash |
+---------------+
| $2tBKnsbV2Szg |
+---------------+
md5
fonctionne bien
mysql> select '$1$$.dCRcHz4ApIYzcA0g/qz3/' = encrypt('qwe', '$1$$.dCRcHz4ApIYzcA0g/qz3/') as is_valid;
+----------+
| is_valid |
+----------+
| 1 |
+----------+
Comment ajouter le support de bcrypt
à MySQL?
Tu ne peux pas. La fonction MySQL ENCRYPT()
utilise la fonction crypt()
du système d'exploitation - si votre système d'exploitation ne prend pas en charge les hachages bcrypt, MySQL ne les prendra pas en charge non plus.
N'utilisez pas non plus la fonction MySQL ENCRYPT()
. Comme l'a noté ircmaxell, toutes les données que vous transmettez à une requête MySQL peuvent se retrouver dans les fichiers journaux du serveur, il est donc potentiellement dangereux de les utiliser pour tout ce qui concerne le mot de passe.