Le module "GESTION COMPTE" et le module de classe "MD5", permet à une application de créer et de gérer
des comptes utilisateur trés facilement.
possibilitées :
-créer un compte utilisateur avec (Nom utilisateur, mot de passe
, question et reponse secréte)
-verifier l'accés par nom d'utilisateur et mot de passe
-Demande de la question secréte par nom utilisateur
-verifier l'accés par nom d'utilisateur et reponse secréte
-modification du mot de passe d'un compte
-modification de la quetion/réponse d'un compte
-suppression d'un compte
Un compte tient dans un fichier, ce fichier est nommé du HASH du nom utilisateur + l'extension ".hist"
Ce fichier est caché dans un dossier qui sera crée au même endroit que l'éxecutable
le fichier contient :
le HASH du Nom d'utilisateur et la reponse secréte '(sur 32 octet)
la question secréte '(sur 256 octet)
le HASH du Nom d'utilisateur et mot de passe '(sur 32 octet)
lorsqu'un utilisateur veut accéder à son compte :
- il rentre son nom d'utilisateur et son mot de passe, grâce au module de classe
on HASH le nom d'utilisateur et le mot de passe et on le compare au HASH enregistré
dans le fichier utilisateur, si identique, l'utilisateur a accés
OU
- Il rentre son nom d'utilisateur et sa réponse secréte, grâce au module de classe
on HASH le tout et on verifie le HASH contenu dans le fichier utilisateur
si correct, l'utilisateur a accés
Le fait que les fichiers de sauvegarde des comptes ne comporte ni mot de passe
ni réponse secréte ni nom d'utilisateur en clair augmente grandement la sécurité.
toute les vérifications s'effectuent grâce aux comparaisons par HASH.
Source / Exemple :
Dim Questionmodule As String * 256
Dim HASH1 As String * 32
Dim HASH2 As String * 32
Dim HASH3 As String * 32
Dim HASH4 As String * 32
Dim HASH5 As String * 32
Dim buffer1 As String * 32
Dim buffer2 As String * 256
Dim HASH As clsMD5
Public Function EnregistreUtil(Utilisateur As String, pass As String, question As String, reponse As String)
Set HASH = New clsMD5 'procedure pour utiliser les fonctions du module de classe (CLSMD5)
File = FreeFile 'Obtenir un numero de fichier libre
Set objfso = CreateObject("Scripting.FileSystemObject") 'création de l'objet necessaire a la vérification de l'existence d'un fichier ou dossier
Questionmodule = question 'la question secréte et placer dans une variable string formater (256 octet)
HASH1 = HASH.DigestStrToHexStr(Utilisateur & pass) 'HASH résultant du Nom d'utilisateur et du mots de passe
HASH2 = HASH.DigestStrToHexStr(Utilisateur & reponse) ' HASH résultant de la question formater sur 256 octet et de la réponse
HASH3 = HASH.DigestStrToHexStr(Utilisateur) 'HASH résultant du nom de l'utilisateur
cheminFile = App.Path & "\hist.{BD84B380-8CA2-1069-AB1D-08000948F534}\" & HASH3 & ".hist" 'Chemin d'accer du fichier utilisateur a crée
Chemin = App.Path & "\hist.{BD84B380-8CA2-1069-AB1D-08000948F534}" 'Chemin d'accer du dossier ou l'on place le fichier utilisateur a crée
If Not objfso.FolderExists(Chemin) Then 'On verifie que le dossier existe, si il n'existe pas
objfso.CreateFolder (Chemin) ' on le crée
End If
If Not (objfso.FileExists(cheminFile)) Then 'On verifie que le fichier utilisateur que l'on va crée n'existe pas deja, dans quel cas, la fonction renvéra le message "Pseudo déja utilisée"
Open cheminFile For Binary As #File 'si le fichier n'existe pas, on le crée
Put #File, 1, HASH2 'On ecrit : 32 premier octet > HASH question, reponse
Put #File, 32 + 1, Questionmodule '256 octet suivant > question
Put #File, 32 + 256 + 1, HASH1 '32 octet suivant > HASH utilisateur & pass
Close #File
EnregistreUtil = "Utilisateur enregistrer" 'Message que renvéra la fonction
Else
EnregistreUtil = "Le pseudo et deja utilisée"
End If
End Function
Public Function LectureUtil(Mode As Integer, Utilisateur As String, Optional pass As String, Optional reponse As String)
'...........................................................................................
'...........................................................................................
''LES ENTREES : ..
' Mode possible : - "1 + Utilisateur + pass" - pour vérification ..
' Mode possible : - "2 + Utilisateur" - pour demande de question secréte ..
' Mode possible : - "3 + Utilisateur + reponse" - pour vérification par réponse secréte ..
' ..
''LES SORTIES : ..
'Mode 1 : - "0 ACCEPTER" ..
' - "1 REFUSER, MOTS DE PASS INCORRECT" ..
' - "4 refuser, il n'existe aucun trace de cette utilisateur" ..
' ..
'Mode 2 : - "2 CONTENUE DE LA REPONSE SECRETE" ..
' - "4 refuser, il n'existe aucun trace de cette utilisateur" ..
' ..
'Mode 3 : - "0 ACCEPTER" ..
' - "3 REFUSER REPONSE INCORRECTE" ..
'...........................................................................................
'...........................................................................................
Set objfso = CreateObject("Scripting.FileSystemObject")
Set HASH = New clsMD5
File = FreeFile
HASH3 = HASH.DigestStrToHexStr(Utilisateur)
cheminFile = App.Path & "\hist.{BD84B380-8CA2-1069-AB1D-08000948F534}\" & HASH3 & ".hist"
If (objfso.FileExists(cheminFile)) Then
Open cheminFile For Binary As #File
Select Case Mode
Case 1:
Get #File, 32 + 256 + 1, buffer1
If buffer1 = HASH.DigestStrToHexStr(Utilisateur & pass) Then
LectureUtil = "0 Accepter"
Else
LectureUtil = "1 refuser, mots de pass incorrect"
End If
Case 2:
Get #File, 32 + 1, buffer2
LectureUtil = "2 " & Trim(buffer2)
Case 3:
Get #File, 1, buffer1
If HASH.DigestStrToHexStr(Utilisateur & reponse) = buffer1 Then
LectureUtil = "0 Accepter"
Else
LectureUtil = "3 refuser, réponse incorrecte"
End If
End Select
Close #File
Else
LectureUtil = "4 refuser, il n'existe aucun trace de cette utilisateur"
End If
End Function
Public Function ModifUtil(Mode As Byte, Utilisateur As String, pass As String, Optional Newpass As String, Optional question As String, Optional reponse As String)
'.............................
'.............................
'LES ENTREES :
' mode possible : 1 - "Utilisateur + pass + NewPass" changement de mots de passe
' mode possible : 2 - "Utilisateur + pass + question + reponse" changement de question/réponse
'LES SORTIES:
'mode 1 : -"2 UTILISATEUR INEXISTANT"
' -"1 MOTS DE PASSE ERRONER"
' -"0 NOUVEAU MOTS DE PASSE ACTIF"
'mode 2 : -"2 UTILISATEUR INEXISTANT"
' -"1 MOTS DE PASSE ERRONER
' -"0 NOUVELLE QUESTION/REPONSE ACTIF"
Set objfso = CreateObject("Scripting.FileSystemObject")
Set HASH = New clsMD5
File = FreeFile
HASH3 = HASH.DigestStrToHexStr(Utilisateur)
cheminFile = App.Path & "\hist.{BD84B380-8CA2-1069-AB1D-08000948F534}\" & HASH3 & ".hist"
HASH1 = HASH.DigestStrToHexStr(Utilisateur & pass)
HASH2 = HASH.DigestStrToHexStr(Utilisateur & Newpass)
If (objfso.FileExists(cheminFile)) Then
Open cheminFile For Binary As #File
Get #File, 32 + 256 + 1, HASH4
Select Case Mode
Case 1:
If HASH4 = HASH1 Then
Put #File, 32 + 256 + 1, HASH2
ModifUtil = "0 Nouveau mots de passe actif"
Else
ModifUtil = "1 Mots de passe erroner"
End If
Case 2:
HASH5 = HASH.DigestStrToHexStr(Utilisateur & reponse)
If HASH4 = HASH1 Then
Questionmodule = question
Put #File, 1, HASH5
Put #File, 32 + 1, Questionmodule
ModifUtil = "0 Nouvelle question/reponse actif"
Else
ModifUtil = "1 Mots de passe erroner"
End If
End Select
Else
ModifUtil = "2 Utilisateur inexistant"
End If
Close #File
End Function
Conclusion :
cv
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.