Générateur de mot de passe (très simple)

Soyez le premier à donner votre avis sur cette source.

Vue 4 874 fois - Téléchargée 743 fois

Description

permet de générer un mot de passe au nombre de lettres et de chiffres définissable et de le sauvegarder en fichier texte, le code est extrêmement simplet

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
97
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
1
Toujours pour les débutant, voici la même fonction mais avec la suppression du Select Case, trop long et peu optimisé. Cette variante utilise un alphabet et la fonction Mid$. Tout ceci peut encore être amélioré pour réduire la taille du code :

Public Function GeneratePassword(ByVal nbCharacter As Integer, ByVal nbNumber As Integer) As String
Dim valueNumber As Integer, charLetter As String
Dim posNumber As Integer, ct As Integer


GeneratePassword = vbNullString

If nbCharacter <= 0 And nbNumber <= 0 Then Exit Function

For ct = 1 To nbCharacter
Call Randomize

charLetter = Mid$("abcdefghijklmnopqrstuvwxyz", 1 + Int(26 * Rnd), 1)
GeneratePassword = GeneratePassword & IIf(Int(6 * Rnd) > 3, UCase$(charLetter), charLetter)
Next ct

For ct = 1 To nbNumber
valueNumber = Int(9 * Rnd)

Call Randomize
posNumber = Int(Len(GeneratePassword) * Rnd)

If posNumber >= 0 And posNumber <= Len(GeneratePassword) Then
GeneratePassword = Left$(GeneratePassword, posNumber) & valueNumber & Right$(GeneratePassword, Len(GeneratePassword) - posNumber)
Else
GeneratePassword = GeneratePassword & valueNumber
End If
Next ct

ct = Int(Len(GeneratePassword) * Rnd)
End Function
Messages postés
97
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
1
Le code est effective simple à comprendre. Il bien d'autres méthodes sur VBFrance, mais celle-ci permet à un débutant de comprendre le code. J'en profite donc pour proposer une variante, avec mise en majuscule de certaines lettres et mélange des lettres et des chiffres, toujours en utilisant la méthode Rnd.

Il s'agit d'une fonction à appeler. L'étape supplémentaire serait de supprimer la partie Select Case par un appel à la table de l'alphabet par son numéro :

Public Function GeneratePassword(ByVal nbCharacter As Integer, ByVal nbNumber As Integer) As String
Dim valueNumber As Integer, charLetter As String
Dim posNumber As Integer, ct As Integer


GeneratePassword = vbNullString

If nbCharacter <= 0 And nbNumber <= 0 Then Exit Function

Call Randomize

For ct = 1 To nbCharacter
Select Case 1 + Int(26 * Rnd)
Case 1
charLetter = "a"
Case 2
charLetter = "b"
Case 3
charLetter = "c"
Case 4
charLetter = "d"
Case 5
charLetter = "e"
Case 6
charLetter = "f"
Case 7
charLetter = "g"
Case 8
charLetter = "h"
Case 9
charLetter = "i"
Case 10
charLetter = "j"
Case 11
charLetter = "k"
Case 12
charLetter = "l"
Case 13
charLetter = "m"
Case 14
charLetter = "n"
Case 15
charLetter = "o"
Case 16
charLetter = "p"
Case 17
charLetter = "q"
Case 18
charLetter = "r"
Case 19
charLetter = "s"
Case 20
charLetter = "t"
Case 21
charLetter = "u"
Case 22
charLetter = "v"
Case 23
charLetter = "w"
Case 24
charLetter = "x"
Case 25
charLetter = "y"
Case 26
charLetter = "z"
End Select

Call Randomize
GeneratePassword = GeneratePassword & IIf(Int(6 * Rnd) > 3, UCase$(charLetter), charLetter)
Next ct

For ct = 1 To nbNumber
valueNumber = Int(9 * Rnd)

Call Randomize
posNumber = Int(Len(GeneratePassword) * Rnd)

If posNumber >= 0 And posNumber <= Len(GeneratePassword) Then
GeneratePassword = Left$(GeneratePassword, posNumber) & valueNumber & Right$(GeneratePassword, Len(GeneratePassword) - posNumber)
Else
GeneratePassword = GeneratePassword & valueNumber
End If
Next ct

ct = Int(Len(GeneratePassword) * Rnd)
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.