Pour ceux qui doivent générer des mots de passe à la pelle pour habiliter des users, j'ai créer ce petit programme qui génére des mots de passe 'prononcable', c'est a dire que phonetiquement ils le sont (pronocables) mais pas forcement (c'est meme sur) syntaxiquement.
J'ais essayé de me souvenir de mes cours de compilation d'il y a longtemps, excusez pour le peu de commentaires dans le programme j'ai du le développer rapidement.
David.
Source / Exemple :
Option Explicit
Private Sub cmdGenere_Click()
Dim i As Integer
For i = 1 To 100
List1.AddItem GenerePassword(Val(txtAlpha.Text), Val(txtNum.Text))
Next i
End Sub
Public Function GenerePassword(lgMot As Integer, lgInt As Integer) As String
Dim i(8, 9) As Integer
Dim s(8, 9) As String
Dim j, k, z As Integer
Dim INITI, INITS As String
Dim Mot As String
Dim LgLigne, IndLIndex, IndLString, Lig, Col As Integer
Dim c As String
INITI = "01,02,03,04,05,06,07,08," & _
"02,03,04,05,06,07,08,-1," & _
"00,01,04,05,-1,-1,-1,-1," & _
"00,01,04,06,-1,-1,-1,-1," & _
"00,01,-1,-1,-1,-1,-1,-1," & _
"00,01,-1,-1,-1,-1,-1,-1," & _
"00,01,-1,-1,-1,-1,-1,-1," & _
"00,01,-1,-1,-1,-1,-1,-1," & _
"00,01,04,06,-1,-1,-1,-1"
INITS = "aeo00000" & _
"iuy00000" & _
"bfqv0000" & _
"t0000000" & _
"r0000000" & _
"l0000000" & _
"h0000000" & _
"jkmnswxz" & _
"p0000000"
z = 1
For k = 0 To 8
For j = 0 To 7
i(j, k) = Val(Mid(INITI, z, 2))
z = z + 3
Next j
Next k
z = 1
For k = 0 To 8
For j = 0 To 7
s(j, k) = Mid(INITS, z, 1)
z = z + 1
Next j
Next k
' fin initialisation, voila on retombe (toujours !) sur nos pieds
'creation du mot
Mot = ""
Randomize
'1er caractere
Do
Lig = Int(Rnd * 9)
Col = Int(Rnd * 8)
c = s(Col, Lig)
Loop Until c <> "0"
Mot = Mot & c
lgMot = lgMot - 1
' les suivants
Do
'determine la longueur de la ligne Lig dans le tableau I
LgLigne = 0
Do While i(LgLigne, Lig) <> -1 And LgLigne < 8
LgLigne = LgLigne + 1
Loop
'on choisit un element dans cette ligne Lig qui donne une ligne dans le tableau S
IndLIndex = Int(Rnd * (LgLigne - 1))
Lig = i(IndLIndex, Lig)
'determine la longueur de la ligne Lig dans le tableau S
LgLigne = 0
Do While s(LgLigne, Lig) <> "0" And LgLigne < 8
LgLigne = LgLigne + 1
Loop
' on choisit un element dans cette ligne Lig du tableau S qui donne une lettre !
IndLString = Int(Rnd * (LgLigne - 1))
c = s(IndLString, Lig)
Mot = Mot & c
lgMot = lgMot - 1
Loop Until lgMot = 0
'chiffre
z = Int(Rnd * 9) + 1
Mot = Mot + Format(z)
lgInt = lgInt - 1
Do While lgInt > 0
z = Int(Rnd * 10)
Mot = Mot & Format(z)
lgInt = lgInt - 1
Loop
GenerePassword = Mot
End Function
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.