Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/12/2007, 11h54   #1
Membre habitué
 
Avatar de ludosoft
 
Homme Ludovic Martin
Chef de projet technique
Inscription : juillet 2002
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Ludovic Martin
Âge : 31
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juillet 2002
Messages : 95
Points : 112
Points : 112
Envoyer un message via MSN à ludosoft Envoyer un message via Skype™ à ludosoft
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 !
ludosoft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2007, 15h19   #2
Membre habitué
 
Avatar de ludosoft
 
Homme Ludovic Martin
Chef de projet technique
Inscription : juillet 2002
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Ludovic Martin
Âge : 31
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juillet 2002
Messages : 95
Points : 112
Points : 112
Envoyer un message via MSN à ludosoft Envoyer un message via Skype™ à ludosoft
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 :
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
ludosoft est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h29.


 
 
 
 
Partenaires

Hébergement Web