Fonction équivalente à password en php

Résolu/Fermé
Jiji_19 Messages postés 30 Date d'inscription lundi 10 février 2014 Statut Membre Dernière intervention 12 novembre 2014 - 12 mars 2014 à 16:05
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 12 mars 2014 à 18:07
Bonjour,

j'ai une table qui contient la liste des comptes utilisateurs et leurs mots de passe.
les mots de passe sont cryptés en utilisant la fonction password de mysql.
maintenant je cherche la fonction équivalente à la fonction password en php.

merci
A voir également:

3 réponses

Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
12 mars 2014 à 16:13
Bonjour.
Il n'y a pas vraiment d'équivalent.

Ce que l'on fait d'habitude:
1- L'utilisateur entre son MDP ("banane" par exemple)
2- On chiffre le mot de passe rentré par l'utilisateur en php. (ça va donné une chaine de caractère bizarre)
3- on stocke cette chaine de caractère bizarre dans la BDD
4- quand l'utilisateur veut s'identifier a nouveau, on chiffre le MDP qu'il entre et on regarde si la chaine de caractère correspond a celle stocké en BDD.

Avantage: même l'admin système ne peut pas avoir accès au MDP en clair car il est tout le temps chiffré. Et en cas de vol de donnée, le MDP ne pourra pas être utilisé.

Pour savoir comment chiffrer un mot ("crypter" est un abus de langage) en php c'est par ici:
https://www.php.net/manual/fr/faq.passwords.php#faq.passwords.fasthash
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
12 mars 2014 à 16:15
'lut, la doc de MySQL ne semble rien indiquer quant a l'algorithme utilisé par
PASSWORD()
, et il est même précisé qu'il ne faut pas s'en servir dans ses applis... D'ailleurs, si on regarde la source de MySQL, on peut se rendre compte qu'il s'agit d'un algorithme spécifique.

Pour arriver à un résultat similaire en PHP, on peut se servir de la fonction hash(), qui permet de hasher un mot de passe avec plusieurs algorithmes. Généralement on choisit md5 ou sha1 à tort: ces hashages ont fait preuve de leur inefficacité par rapport aux collisions de hash; ils ne sont donc pas sécurisés. Choisis sha256 ou plus, ou un autre algorithme s'il est sécurisé, puis:
$hashMdp = hash("sha256", $mdp);


Si tu veux "migrer" les mots de passe MySQL vers un autre algorithme, tu es dans le pétrin: on ne peut pas convertir entre 2 algorithmes sachant qu'ils sont irréversibles...

La seule "solution" serait de traduire la source en C de la fonction PASSWORD en PHP.
0
Jiji_19 Messages postés 30 Date d'inscription lundi 10 février 2014 Statut Membre Dernière intervention 12 novembre 2014 1
12 mars 2014 à 16:34
donc selon vous, je dois changer la fonction de cryptage?
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
12 mars 2014 à 18:07
Petite note: ce n'est pas du cryptage mais du hachage (hash en anglais) que l'on fait: un cryptage est réversible avec une clé/mot de passe, le hachage n'est pas réversible.
Sachant que la fonction PASSWORD utilisée par MySQL n'a pas d'équivalent en PHP (ni dans d'autres langages), il serait préférable de prendre une fonction "standard" comme sha256, qui est disponible en PHP et MySQL. Mais comme je l'ai dit, il n'est pas possible de convertir un mot de passe déjà haché, donc si tu disposes déjà d'une base de données avec des utilisateurs, tu te trouves dans une impasse de sécurité -- mais cela dépend de ton scénario.
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
12 mars 2014 à 16:15
Salut,

Doc PHP, Hashage des mots de passe : https://www.php.net/manual/fr/faq.passwords.php#faq.passwords.bestpractice

Bonne journée
0