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

SQL Procédural MySQL Discussion :

Implémentation de OLD_PASSWORD


Sujet :

SQL Procédural MySQL

  1. #1
    Membre confirmé Avatar de ludosoft
    Homme Profil pro
    Chef de projet technique
    Inscrit en
    Juillet 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2002
    Messages : 99
    Par défaut Implémentation de OLD_PASSWORD
    Bonjour,

    Je travaille actuellement sur le "rafraichissement" d'une application Web PHP5/MySQL. Et pour l'occasion, je souhaiterais que cette application soit le moins dépendante possible du SGBD.

    Le problème c'est que dans cette application il y a une table "utilisateur" dont la colonne "mot_de_passe" est hachées avec la fonction "OLD_PASSWORD".
    Donc dans le cas d'un changement de SGBD, vous vous doutez bien qu'il va y avoir un os.

    Ma question est la suivante : comment implémenter cette fonction en PHP (ou dans un autre langage) ?

    J'ai fouiné un peu les sources de MySQL mais j'avoue ne pas m'y retrouver. Si quelqu'un pouvait m'indiquer où je peux trouver l'algo ou même une implémentation libre ce serait royal .

    Merci d'avance !

  2. #2
    Membre confirmé Avatar de ludosoft
    Homme Profil pro
    Chef de projet technique
    Inscrit en
    Juillet 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2002
    Messages : 99
    Par défaut
    Bon ben dommage que personne ne soit venu m'aider... En attendant j'ai fini par trouver la réponse dans les sources de MySQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    //---------------------------------------------------------------------------
    #include <stdio.h>
    #include <string.h>
    //---------------------------------------------------------------------------
    typedef unsigned int uint;
    typedef unsigned long ulong;
    typedef unsigned char uchar;
    //---------------------------------------------------------------------------
    void hash_password(ulong *result, const char *password, uint password_len)
    {
      register ulong nr=1345345333L, add=7, nr2=0x12345671L;
      ulong tmp;
      const char *password_end= password + password_len;
      for (; password < password_end; password++)
      {
        if (*password == ' ' || *password == '\t')
          continue;                                 /* skip space in password */
        tmp= (ulong) (uchar) *password;
        nr^= (((nr & 63)+add)*tmp)+ (nr << 8);
        nr2+=(nr2 << 8) ^ nr;
        add+=tmp;
      }
      result[0]=nr & (((ulong) 1L << 31) -1L); /* Don't use sign bit (str2int) */;
      result[1]=nr2 & (((ulong) 1L << 31) -1L);
    }
    //---------------------------------------------------------------------------
    void make_scrambled_password_323(char *to, const char *password)
    {
      ulong hash_res[2];
      hash_password(hash_res, password, (uint) strlen(password));
      sprintf(to, "%08lx%08lx", hash_res[0], hash_res[1]);
    }
    //---------------------------------------------------------------------------
    //---------------------------------------------------------------------------
    //---------------------------------------------------------------------------
    //---------------------------------------------------------------------------
    int main(int argc,char* argv)
    {
    	char password[]="test";
    	char output[512];
     
    	make_scrambled_password_323(output,password);
     
    	printf("%s",output);
     
    	getchar();
    	return 0;
    }
    //---------------------------------------------------------------------------
    Reste juste à transcoder ça en PHP

    Référence : sources de MySQL 5.0.51 \mysql-5.0.51\libmysql\password.c

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 01/07/2004, 11h03
  2. Réponses: 8
    Dernier message: 04/06/2004, 09h13
  3. Moteur physique : comment l'implémenter ?
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 17/12/2003, 12h56
  4. Réponses: 2
    Dernier message: 06/07/2002, 12h36
  5. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19

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