Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
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 03/03/2011, 12h01   #1
Invité de passage
 
Inscription : mars 2011
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 12
Points : 4
Points : 4
Par défaut cryptage en MD5 des mots de passes en base sql server 2005 'jeu de caractères'

Bonjour,
après avoir consacré une journée à résoudre problème je me redirige vers vous espérant trouver une aide.
Je vous explique mon problème:
je voudrais arriver à crypter les mots de passe en MD5. pour cela, j'ai essayé pas mal de scripts sans succès.
par exemple,
Code :
1
2
UPDATE mtd_utilisateur
    SET mot_passe = HashBytes('MD5', mot_passe)
j'obtiens avec cela un MDP crypté d'une manière bizarre(des carrés et des caractères spéciaux) en tout cas pas du md5 que je connais!
J'ai essayé de changer l'encodage de la table plusieurs fois, pas de bol...

Je vous remercie d'avance de vos réponses.
khaled_s est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2011, 14h16   #2
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 667
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 667
Points : 8 715
Points : 8 715
Bonjour,

Citation:
J'ai essayé de changer l'encodage de la table plusieurs fois
Ceci me fait penser que vous stockez le résultat dans une colonne de type n(var)(char), et que vous vous êtes amusé à changer la collation de la colonne ...

Comme décrit dans la documentation, la fonction HASHBYTES retourne un varbinary d'une longueur maximale de 8000 octets.
Donc si votre colonne n'est pas du type varbinary, cela ne peut pas fonctionner.

Ensuite les collations servent à changer la méthode de tri lorsque vous utilisez, par exemple, un ORDER BY sur une colonne dont le type est l'un des types chaîne de caractères de SQL Server.

Le type (var)char vous permet de stocker tous les caractères de l'alphabet latin et les chiffres arabes.
Le type n(var)char vous permet de stocker tous ceux-ci, plus les caractères autres que ceux de l'alphabet latin.
En aucun cas ces deux types vous permettent de stocker des hexadécimaux.

Pour la 3e fois aujourd'hui sur ce forum, choisissez le type de données adéquat !

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 03/03/2011, 17h29   #3
Invité de passage
 
Inscription : mars 2011
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 12
Points : 4
Points : 4
Par défaut données binaires au lieux du MD5

Hello,
Merci beaucoup de votre réponse
encore une question!
quand je change le type de données en varbinary(50) ou MAX, j'obtiens <données binaires > et je ne peux pas visualiser mon haché

pour vérifier l'authentification, je compare le MD5 que je génère en JS et le MD5 de ma base.
le problème est que je ne visualise pas mon MD5 en base, et quand je rentre un utilisateur en ligne de commande avec la fonction de hachage, ça donne toujours <données binaires> dans le champs mot_pass.

encore merci d'avance de votre réponse.
khaled_s est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 08h32   #4
Membre éclairé
 
Avatar de jmjmjm
 
Homme Jérémy
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 751
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Service public

Informations forums :
Inscription : avril 2005
Messages : 751
Points : 381
Points : 381
salut, si ton champ est en varbinary tu dois avoir un truc du genre 0x344d23333b45c345d...
Bref de l'hexa.

Tu as deux solutions, le convertir coté application je ne sais pas quelle langage tu utilises mais c'est souvent assez simple.
Sinon tu peux le convertir depuis SQL SERVEUR avec :
Code :
SELECT CONVERT(varchar(max),HASHBYTES('MD5','TEST'),2)
Voila, si tu n'as plus de questions pense au tag
jmjmjm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 11h24   #5
Invité de passage
 
Inscription : mars 2011
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 12
Points : 4
Points : 4
Bonjour,
ça marche toujours pas!
J'ai essayé sur mysql c'est très simple!
mais je galère encore sur sql server. quand mon champs est en varbinary j'ai <données binaires> dans ma table au lieu de 0x344d23333b45c345d...
et quand je fait convertir un varchar, j'ai toujours des caractères spéciaux

une aiiiide please!!!!
et merci d'avance
khaled_s est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 11h35   #6
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
n'essayez pas de 'voir' vos hashage dans SQL SERVER... Récupérez le dans votre langage client.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 12h12   #7
Invité de passage
 
Inscription : mars 2011
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 12
Points : 4
Points : 4
j'ai trouvé la solution

Code :
1
2
UPDATE mtd_utilisateur
SET mot_passe = cast(sys.fn_VarBinToHexStr(hashbytes('MD5','motpass')) AS varchar(100))
espérant que ça va servir pour quelqu'un d'autre!

Et merci de vos réponses

Khaled.
khaled_s 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 15h26.


 
 
 
 
Partenaires

Hébergement Web