Mot de passe 'prononcable'

Description

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

Codes Sources

A voir également

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.