1. #1
    Membre habitué Avatar de droliprane
    Homme Profil pro
    Inscrit en
    mai 2005
    Messages
    547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : mai 2005
    Messages : 547
    Points : 198
    Points
    198

    Par défaut Stocker un hash SHA1 en base Sql Server

    Bonjour à tous,
    j'essaye d'améliorer la sécurité au niveau de mon appli et notamment au niveau de l'encodage des passwords.
    Je veux stocker une chaine représentative d'un hash SHA1, obtenu comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BufferVersHexa(HashChaîne(HA_SHA_160,SAI_password))
    et qui ressemble à ça quand je fais un trace :

    DC 76 E9 F0 C0 00 6E 8F 91 9E 0C 51 5C 66 DB BA<\r><\n>39 82 F7 85
    Il y a en effet ce <\r><\n> qui fait que je me retrouve en BD avec ceci dans mon champs varchar(max) :

    DC 76 E9 F0 C0 00 6E 8F 91 9E 0C 51 5C 66 DB BA
    3
    D'un autre côté j'ai un frontend php qui me permet de me connecter à une ihm light de consultation, qui interroge avec le sha1 sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TOP 1 usr_id FROM usr WHERE usr_pwd_crypte = 'dc76e9f0c0006e8f919e0c515c66dbba3982f785' AND usr_actif=1;
    Donc je dois faire en sorte que mon appli Windev sache générer dans ma base Sql Server un hash au même format.

    Qu'est-ce que j'oublie de faire ?

    Merci à vous

  2. #2
    Membre habitué Avatar de droliprane
    Homme Profil pro
    Inscrit en
    mai 2005
    Messages
    547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : mai 2005
    Messages : 547
    Points : 198
    Points
    198

    Par défaut

    Bon alors comme souvent je me réponds à moi-même

    Il faut formatter l'affichage du BufferVersHexa pour qu'il ne fasse des sauts de ligne que tous les N octets

    J'ai mis 30 pour être tranquille, mais un hash SHA1 fait 160bits soit 20 octets.

    Et puis j'ai supprimé les espaces internes pour que mon hash ait la même forme que ce que php me génère avec la fonction sha1 classique.

    Minuscule(ChaîneSupprime(BufferVersHexa(HashChaîne(HA_SHA_160, SAI_password), 1, 30)," "))

    Il y a surement plus simple, je ne suis pas un grand ami des conversions binaires/hexa avec la complexité ajoutée par l'encodage des caractères en ansi, unicode... mais bon ça semble fonctionner

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    mars 2002
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 1 013
    Points : 496
    Points
    496

    Par défaut

    Nous avons un traitement identique pour le client chez lequel j'interviens.
    Il n'y a pas que les retours à la ligne qui posent problème dans le hashage. Selon la clé utilisée il y a aussi des caractères différents de lettres ou de chiffres.

  4. #4
    Membre habitué Avatar de droliprane
    Homme Profil pro
    Inscrit en
    mai 2005
    Messages
    547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : mai 2005
    Messages : 547
    Points : 198
    Points
    198

    Par défaut

    Citation Envoyé par Delphi-ne Voir le message
    Nous avons un traitement identique pour le client chez lequel j'interviens.
    Il n'y a pas que les retours à la ligne qui posent problème dans le hashage. Selon la clé utilisée il y a aussi des caractères différents de lettres ou de chiffres.
    Donc cette solution n'est pas viable ?

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    mars 2002
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 1 013
    Points : 496
    Points
    496

    Par défaut

    Voilà un exemple.
    Une fois la chaine haschée on la balaie caractère par caractère et on stocke sa conversion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            LC_Hash = sha.ComputeHash(PC_Hash)
            Dim LC_Result As String = ""
            For Each b As Byte In LC_Hash
                LC_Result += b.ToString("x2")
            Next
    J'espère que cela vous aidera.

Discussions similaires

  1. [c#] Connection impossible à la base SQL Server
    Par cedgov dans le forum ASP.NET
    Réponses: 8
    Dernier message: 16/05/2005, 07h37
  2. formualaire access pour gerer bases sql server
    Par attavus dans le forum MS SQL-Server
    Réponses: 2
    Dernier message: 25/04/2005, 11h01
  3. Backup et restore d'une base SQL Server
    Par ZeKlubb dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/03/2005, 18h17
  4. attaquer base sql server avec easyphp sous windows
    Par jarod71 dans le forum MS SQL-Server
    Réponses: 7
    Dernier message: 11/12/2003, 14h17
  5. Comment se connecter à une base SQL server
    Par zapia dans le forum MS SQL-Server
    Réponses: 7
    Dernier message: 22/10/2003, 17h39

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