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

VBA Access Discussion :

Encrypter un mot de passe avant de le mettre à jour dans la table [AC-2010]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Par défaut Encrypter un mot de passe avant de le mettre à jour dans la table
    Bonjour,
    J'ai une table nommée "Employés" dans laquelle un champ nommé "LoginMotDePasse" reçoit les mots de passe créés sur mon formulaire "F_ChangePassword", le champ qui reçoit mon mot de passe sur ce formulaire est TxtPwdNew_1 et lors de l'acceptation du nouveau mot de passe, ma fonction P_SetNewPassword, prend le champ TxtPwdNew_1 et le place dans le champ LoginMotDePasse de ma table "Employés".
    Voici le code dans P_SetNewPassword et également le code dans ma fonction Encrypt (code que j'ai trouvé sur Internet).

    Ma question est comment puis-je formuler cette ligne de code pour que le mot de passe soit encrypter avant de se rendre dans la table... ou est-ce que j'ai la bonne compréhension de l'encryptage?

    Code P_SetNewPassword:
    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
    Private Sub P_SetNewPassword(ByVal TgtQueryName As String)
    On Error GoTo ErrTrap
        Dim Qst As String
        Dim Enc As String
        Dim db As DAO.Database
     
        Set db = DBEngine(0)(0)
     
        Call Encrypt(Me.TxtPwdNew_1)
     
        Qst = "UPDATE " & TgtQueryName & _
                " SET LoginMotDePasse = '" & Me.TxtPwdNew_1 & _
                "' Where UTilisateurID = '" & Me.TxtUserID & "';"
     
        db.Execute Qst, dbFailOnError
     
    ExitPoint:
        Set db = Nothing
        On Error GoTo 0
        Exit Sub
     
    ErrTrap:
        MsgBox Err.Number & " - " & Err.Description
        Resume ExitPoint
    End Sub
    Notez que la ligne Call Encrypt...me donne une erreur "Erreur de compilation, argument non facultatif".

    Voici le code de ma fonction Encrypt:
    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
    Public Function Encrypt(ByVal strIn As String, ByVal strCode As String) As String
    On Error GoTo Error_Handler
     
    Dim i As Integer
    Dim bytData As Byte
    Dim bytKey As Byte
    Dim strEncrypted As String
     
    Encrypt = vbNullString
     
    For i = 1 To Len(strIn)
    bytData = Asc(Mid(strIn, i, 1))
    bytKey = Asc(Mid(strCode, (i Mod Len(strCode)) + 1))
    strEncrypted = strEncrypted & Chr(bytData Xor bytKey)
    Next i
     
    If strEncrypted <> vbNullString Then
    Encrypt = strEncrypted
    End If
     
    Exit_Here:
    Exit Function
     
    Error_Handler:
    Resume Exit_Here
    End Function
    Merci à tous pour votre aide
    Claude du Québec, Canada

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Les Function peuvent être utilisées comme des Sub via un Call mais leur but premier est de retourner un résultat donc il te faut une variable pour récupérer le dit résultat.

    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
    Private Sub P_SetNewPassword(ByVal TgtQueryName As String)
    On Error GoTo ErrTrap
        Dim Qst As String
        Dim Enc As String
        Dim db As DAO.Database
     
        Set db = CurrentDB 'Plus claire que DBEngine(0)(0) 
     
        dim motPasseEncrypte as string : motPasseEncrypte=Encrypt(Me.TxtPwdNew_1)
     
        Qst = "UPDATE " & TgtQueryName & _
                " SET LoginMotDePasse = '" & motPasseEncrypte & _
                "' Where UTilisateurID = '" & Me.TxtUserID & "';"
     
        db.Execute Qst, dbFailOnError
     
    ExitPoint:
        Set db = Nothing
        Exit Sub
     
    ErrTrap:
        MsgBox Err.Number & " - " & Err.Description
        Resume ExitPoint
    End Sub
    Je ne comprends pas pourquoi tu passes le nom de la table qui contient les mots de passe en paramètre. As-tu plusieurs tables de mot de passe ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 197
    Billets dans le blog
    47
    Par défaut
    Bonjour,

    La fonction Encrypt attend deux paramètres : la chaîne de caractères à crypter et un masque. En retour, on a la chaîne cryptée.

    Dans la fenêtre d’exécution de VBE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MotdePasseCrypte= Encrypt("monmotdepasse", "LeMasque")
    
    ? MotdePasseCrypte
     *#&= @$£?%              <-- et autres caractères non collables ici
    Pour reconstituer la chaîne initiale, on a besoin du masque que l’on applique à nouveau sur la chaîne cryptée (grâce aux propriétés du OU exclusif utilisé dans l’algorithme) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ? Encrypt(MotdePasseCrypte, "LeMasque")
    monmotdepasse
    Système de cryptage à déconseiller si la base concerne les codes de sureté nucléaires, le système de paye des agents de la fonction publique, des cotisations retraites ou toute base sensible de même nature

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Par défaut J'ai effectivement 2 requêtes distinctes dans laquelle..
    J'ai effectivement 2 requêtes distinctes dans laquelle je vérifie les mots de passe, une pour les administrateurs et une autre pour les usagers avec restrictions.
    Je vous remercie pour les 2 réponses, elles m'ont aidées à résoudre mon problème.

    Bonne année
    Claude

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 197
    Billets dans le blog
    47
    Par défaut
    Avec ce principe de masquage, il est souhaitable de générer des clés aléatoires à n’utiliser qu’une seule fois (masque "jetable") mais il reste que cette clé devient une sorte de nouveau mot de passe pour l’utilisateur pour décoder son mot de passe, on n’en sort pas.

    Fais un tour du côté des fonctions de hachage (hashage) certainement plus adaptées à ton problème et avec des algos qui traînent sur Internet.

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

Discussions similaires

  1. [1.x] Crypter les mot de passe avant sauvegarde
    Par Computib dans le forum Symfony
    Réponses: 6
    Dernier message: 13/07/2010, 13h04
  2. Encryption de mot de passe, best practice
    Par Baquardie dans le forum Développement
    Réponses: 1
    Dernier message: 22/04/2010, 19h35
  3. Mot de passe AVANT ouverture sous excel !
    Par gm2759 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/07/2008, 21h59
  4. imposer mot de passe avant d'accéder à Tomcat et à l'application
    Par achi2005 dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 26/06/2008, 10h54
  5. Encrypter un mot de passe
    Par loukili81 dans le forum Langage
    Réponses: 3
    Dernier message: 07/05/2007, 14h29

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