IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Reproduire le hash() du PHP


Sujet :

JavaScript

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut Reproduire le hash() du PHP
    Bonjour,

    Je suis en train d'écrire une appli avec angularJS.
    J'ai besoin de crypter un password afin de le comparer avec celui stocké sur le serveur.
    Mon souci est que sur le serveur le password est hashé en PHP avec la fonction hash() et surtout avec l'option "raw_output" à true.
    J'ai bien réussi en JS à faire du cryptage sha512 avec la librairie crypto-js mais elle encode en hexa et donc mon résultat n'est pas le même bien sûr...
    Pouvez-vous m'aider ?
    Merci.
    Jérôme

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    crypto-js est une bonne piste. Quel algorithme de hachage et quel format sérialisé comptes-tu utiliser pour transmettre le hash au serveur ?
    One Web to rule them all

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut
    Merci de ton retour Sylvain
    En PHP, je prends mon password avec du "salt" et je le crypte en SHA512 avec la fonction hash() et "raw_output" a true
    Ca me donne une valeur binaire (car raw_output) et cette valeur je la recrypte encore SHA512... Et à la fin je crypte le tout en base64
    voici mon code PHP
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            $salted = $pass . '{' . $salt . '}';
            $digest = hash('sha512', $salted, true);
            for ($i = 1; $i < $iterations; $i++) {
                $digest = hash('sha512', $digest . $salted, true);
            }
            $cryptedPass = base64_encode($digest);
    En JS j'ai fait ça :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        var salted = pass + '{' + salt + '}';
        var digest = CryptoJS.SHA512(salted);
        for (i = 1; i < iteration; i++) {
            digest = CryptoJS.SHA512(digest.concat(CryptoJS.enc.Utf8.parse(salted)));
        }    
        var cryptedPass = CryptoJS.enc.Base64.parse(digest.toString());

    Si je compare à ce que j'obtiens en PHP, ce n'est pas la même valeur
    Par contre si je fais en PHP hash('sha512', $salted, FALSE); donc en désactivant l'option "raw_output", là j'obtiens bien le même résultat en PHP et en JS
    Il faut donc que je trouve comment faire ce "raw_output" en JS...
    Comment faire ?
    Merci.
    Jérôme

  4. #4
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    J'ai un doute sur la dernière ligne de code JS avec le parse base 64. Essaie ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var salted = pass +'{'+ salt +'}';
    var digest = CryptoJS.SHA512(salted);
    for (i = 1; i < iteration; i++) {
        digest = CryptoJS.SHA512(digest.concat(CryptoJS.enc.Utf8.parse(salted)));
    }    
    var cryptedPass = digest.toString(CryptoJS.enc.Base64);
    One Web to rule them all

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut
    Merci Sylvain, c'est exactement ça !!!!
    Grand merci à toi...
    Par contre je veux bien une petite explication sur la différence entre les 2 instructions :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var cryptedPass = CryptoJS.enc.Base64.parse(digest.toString());
    var cryptedPass = digest.toString(CryptoJS.enc.Base64);
    Jérôme

  6. #6
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Je suis pas expert de CryptoJS mais je crois comprendre que la première ligne attend du base64 en entrée (parse) tandis que la seconde en produit à la sortie.
    One Web to rule them all

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Hash Fichier différent sous Qt et PHP
    Par jemtlse dans le forum Débuter
    Réponses: 1
    Dernier message: 31/12/2012, 11h21
  2. Array serializé PHP -> HASH, ARRAY perl
    Par shensi dans le forum Langage
    Réponses: 7
    Dernier message: 16/03/2011, 13h14
  3. Comment recuperer le hash en php
    Par dembroski dans le forum Langage
    Réponses: 2
    Dernier message: 19/02/2010, 15h02
  4. Perl hash => Php array: Module existant?
    Par ssc37 dans le forum Langage
    Réponses: 1
    Dernier message: 10/12/2009, 13h18
  5. Obtenir le hash d'un fichier en PHP ?
    Par ddubois dans le forum Langage
    Réponses: 1
    Dernier message: 26/04/2006, 11h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo