Bonjour, après avoir suivi pas mal de tuto, je rencontre un petit problème.
J'utilise la class $this->Auth ce qui a pour but entre autre de hasher les mots de passe de mes utilisateurs. Le souci c'est que je viens de créer sou excel une BDD de tous mes utilisateurs. Je l'importe dans phpmyAdmin, mais les mot de passe non hashés. J'aurais voulu savoir quel est le "hashage" de base de Cake PHP afin que je fasse la modification ?
A priori ce n'est ni du sha1 ni du sha256 et encore moins du md5.

Aprés quelque recherche, il semble que le hash de base soit SHA1, mais lorsque je fais :

echo $this->Auth->password('C190020');

et

$pwd = hash('sha1','C190020');
echo $pwd;

Je n'ai pas le m^me résultat !
Quelqu'un aurait il une solution ?

Merci à tous est bonne pluie...

Diga

4 réponses


digaburla
Auteur
Réponse acceptée

Yop, i'm back...
Bon j'ai solutionné mon problème, je penses que tout cela peut être amélioré, mais bon petit à petit on devient...

Ici, une boucle qui permet donc de sauvegarder un mot de passe Hashé dans ma colonne password_hash.

for ($i = 0; $i <= 827; $i++)
{
$password = $users$i]'User']'password'];
$password_hash = Security::hash($password, 'sha1', true);
    if ($this->User->save(array('id' => $i+1 ,'password_hash' => $password_hash)));
    {               
        $this->Session->setFlash(__('Votre mdp hashé.'));
    }
}

J'ai ensuite supprimé dans phpmyadmin ma colonne password et remplacé cette dernière par password_hash

Voilou

J'ai eu un flash après avoir mangé une banane... =/

A plus plus

Diga

Salut et merci de vos réponses.
Cela dit j'avais lu la doc et en tant que débutant tout n'était pas claire. Aprés vos remarque et la relecture voici le code de Hash :

$sha1 = Security::hash('motdepasse', 'sha1', true);

Cela étant, est il possible de hasher le MDP en SQL directement comme ceci :

alter table test add column motdepasse_hash varchar(50);
update test set password_hash = sha1(motdepasse);

Ou dois-je créer une moulinette qui le ferais directement

Merci de vos réponses en tous les cas.

Sisi merci

Diga

Merci pour ton retour,
J'ai tester donc en SQL directement (en utilisant le code de mon post précédent), mais cela ne fonctionne pas. J'obtiens bien un mot de passe Hashé, mais qui ne correspond pas à celui attendu. Si j'ai bien lu la Doc. et surtout bien compris, il me semble que cela soit logique puisque ma valeur du Salt est sur 'true' ce qui implique un valeur supplémentaire. (Hmm, je suis pas très clair là, non ?)

Si tu as une proposition à me faire, je suis preneur.

Du coup sinon je tente de le faire en php...je tente, j'essai, j'avance, pour ne pas dire que je recule...Bref voilà un bout de code :
Ici, j'essai de sauvegardé le mot de passe hashé de mon id 158

public function user() {
            $this->layout = 'layoutAdmin';
            $users = $this->User->find('all');
                        $this->set('users', $users);
                }
            $id = 158;
            $pass_hash = Security::hash('C210422', 'sha1', true);
            if ($this->User->save(array('id' => $id, 'password' => $pass_hash)));
            {
                        $this->Session->setFlash(__('LE MDP a été hashé'));
            }

Pareil, si tu as une direction à me faire prendre, je suis bien chaussé.

Merci