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

Développement SQL Server Discussion :

Type adéquat pour stocker une clef MD5


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 43
    Par défaut Type adéquat pour stocker une clef MD5
    Bonjour à tous,

    Je souhaite stocker une clé MD5 dans une base MSSQL.

    J'ai une table "user" et un champ "password" de type binary(16).

    Je souhaite stocker le mot de passe : "PasswordTest"
    En MD5 cela donne : "e9d21bb01e2a39e1ea9b3d27b6ac2e15".

    Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO user (username,password) VALUES ('Toto','e9d21bb01e2a39e1ea9b3d27b6ac2e15')
    Ca me répond :
    Error: [Microsoft][SQL Server Native Client 10.0][SQL Server]Implicit conversion from data type varchar to binary is not allowed. Use the CONVERT function to run this query.
    J'ai essayer de bricoler avec CONVERT mais sans succès


    Merci pour vos lumières

    Steve

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Créer une table de nom USER est de la plus haute stupidité.

    Sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO "user" (username,password) 
    SELECT 'Toto', HASHBYTES('mot de passe', MD5)
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 43
    Par défaut
    Merci pour la réponse et du conseil pour éviter les stupidités

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 43
    Par défaut
    Petite "correction" il faut utiliser : HASHBYTES('MD5', 'mot de passe').

    Cela donnerai donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO [user] (username,password) 
    SELECT 'Toto', HASHBYTES('MD5', 'mot de passe')
    Ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO [user] (username,password) 
    VALUES ('Toto', HASHBYTES('MD5', 'mot de passe'))

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    mea culpa !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 43
    Par défaut
    Par contre si je comprends bien il faut que je donne mon mot de passe "en clair" ? Et c'est la fonction HASHBYTES qui va me le transformer en MD5.

    Moi je souhaite stocker le MD5 directement (car il est hashé côté client et transite en MD5) ? Comment faire ? Faut-il changer mon type de variable et utiliser un char(32) plutôt que binary(16) ?

    Merci

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Vous pouvez bien insérer du binaire, encore faut-il que ça en soit (et non du binaire déguisé en chaine de caractères) :

    Vous pouvez par exemple faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO u (username,password) VALUES ('Toto',0xe9d21bb01e2a39e1ea9b3d27b6ac2e15)

Discussions similaires

  1. type d'une colonne pour stocker une liste d'IDs
    Par zozor241 dans le forum Débuter
    Réponses: 1
    Dernier message: 07/04/2013, 19h18
  2. Type adéquat pour stocker une clef MD5
    Par olibara dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/04/2010, 17h43
  3. Type PostgreSQL pour stocker des grands nombres
    Par K-Kaï dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 08/06/2006, 20h26
  4. Meilleur type table pour stocker des valeurs numérique
    Par vodevil dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/04/2006, 20h42
  5. [Image] Classe pour stocker une image JPEG ?
    Par elitost dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 19/01/2006, 13h34

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