Mot de passe 'prononcable'

Soyez le premier à donner votre avis sur cette source.

Vue 3 941 fois - Téléchargée 345 fois

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

Ajouter un commentaire

Commentaires

anduril22
Messages postés
75
Date d'inscription
mardi 5 mars 2002
Statut
Membre
Dernière intervention
5 octobre 2005
-
Euh c'est sans doute tres interessant mais j'espère que mon administreur n'utilise pas ce genre de programme... Point de vu sécurité
Nargzul
Messages postés
438
Date d'inscription
vendredi 9 mai 2003
Statut
Membre
Dernière intervention
26 juillet 2007
3 -
ouais, pq g fait qques essais, mais dans un mdp, ya une 10aine de fois la meme lettre (sur 20 et 20)....
et pis on est obligé de quitter le prog et de le réouvrire si on veut reessayer...

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.