Les Snippets

Connexion

Générer un mot de passe aléatoire

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 18/05/2008 11:37:02 et initié par swaenboutu [Liste]
Date de mise à jour : 27/08/2008 11:15:09
Vue : 5610
Catégorie(s) : Sécurité, Trucs & Astuces, Chaîne de caractères
Langage sélectionné : VBScript
Langages dispo pour ce code :
- PHP 3, PHP 4, PHP 5
- PHP 4, PHP 5
- Delphi 5
- Javascript
- VBScript
- VBScript
- VB6, VBA
- VB 2005, VB 2008
- C, C++
- Voir tous les langages pour ce code snippet



Langage : VBScript
Date ajout : 29/07/2008
Posté par MisterWhiteLapin [Liste]

' Forcer la déclaration des variables.
Option Explicit
' Nous utilisons de l'aléa donc nous faisons appel à Randomize au
' début du script pour avoir un meilleur aléa.
Randomize
' Déclaration de la variable contenant tous les
'caractères potentienles du mot de passe.
Dim strElmts
' Nombre d'éléments (de caractères différents
'composants possible pour le mot de passe).
Dim intNbElmts

' C'est  ici qu'il faut ajouter/enlever des
' caractères selon ses attentes.
strElmts = "abcdefghijklmnopqrstuvwxyz" & _
                "ABCDEFGHIJKLMNOPQRSTUVWXYZ" & _
                "0123456789" & _
                "#?./§,;:!%*$&'<>()[]{}@-_+=|"
intNbElmts = Len(strElmts)

' Génère un mot de passe de intLen caractères.
Function PasswordGeneration(intLen)
    Dim i
    PasswordGeneration = ""
    For i = 1 to intLen
        PasswordGeneration = PasswordGeneration & mid(strElmts, Int(rnd * intNbElmts) + 1, 1)
    Next
End Function
' Vérifie la "politique de sécurité" du mot de passe.
' Ici, la politique de sécurité adoptée est la suivante:
'   - au moins 8 caractères,
'   - au moins 1 caractère en majuscule,
'   - au moins 1 caractère en minuscule,
'   - au moins 1 caractère numérique,
'   - au moins 2 caractères 'spéciaux'.
' Retourne "True" si la politique de sécurité est bonne.
Function CheckSecurityPolitic(strPassword)
    ' Indices de boucle.
    Dim i, j
    ' Compteurs.
    Dim intCptMinuscules, intCptMajuscules, intCptNum, intCptSpec
    ' Index de début de séquence de caractère spéciaux
    ' dans la variable strElmts.
    Dim intIndexSpec
    ' Taille du mot de passe.
    Dim intLenPassword
    intLenPassword = Len(strPassword)
    ' vérification de "au moins 8 caractères":
    If (intLenPassword < 8) Then
        CheckSecurityPolitic = False
        Exit Function
    End If
    ' ATTENTION: Il faut que la séquences de caractères "spéciaux"
    ' commence par # (comme c'est le cas ici).
    intIndexSpec = InStr(strElmts, "#")
    ' Comptage des caractères.
    intCptMinuscules = 0
    intCptMajuscules = 0
    intCptNum = 0
    intCptSpec = 0
    For i = 1 To intLenPassword
        If ((asc(Mid(strPassword, i, 1)) >= asc("a")) And _
            (asc(Mid(strPassword, i, 1)) <= asc("z"))) Then
            intCptMinuscules = intCptMinuscules + 1
        End If
        If ((asc(Mid(strPassword, i, 1)) >= asc("A")) And _
            (asc(Mid(strPassword, i, 1)) <= asc("Z"))) Then
            intCptMajuscules = intCptMajuscules + 1
        End If
        If ((asc(Mid(strPassword, i, 1)) >= asc("0")) And _
            (asc(Mid(strPassword, i, 1)) <= asc("9"))) Then
            intCptNum = intCptNum + 1
        End If
        For j = intIndexSpec To intNbElmts
            If (Mid(strElmts, j, 1) = Mid(strPassword, i, 1)) Then
            intCptSpec = intCptSpec + 1
        End If
        Next
    Next
    CheckSecurityPolitic = (intCptMinuscules >= 1) And _
                           (intCptMajuscules >= 1) And _
                           (intCptNum >= 1) And _
                           (intCptSpec >= 2)
End Function

' Génère un mot de passe "sécurisé" de 8 à 14 caractères.
Function SecurityPasswordGeneration()
    SecurityPasswordGeneration = ""
    While (Not (CheckSecurityPolitic(SecurityPasswordGeneration)))
        SecurityPasswordGeneration = PasswordGeneration(Int(rnd * 9) + 6)
    WEnd
End Function

'#####################################
' Tests/démonstrations des fonctions.
'#####################################
Dim strAccumul
' Fonction PasswordGeneration
strAccumul = "Mot de passe condition particulière:" & VbCrlf
strAccumul = strAccumul & "    De 8 caractères:" & PasswordGeneration(8) & VbCrlf
strAccumul = strAccumul & "    Entre 6 et 12 caractères: " & PasswordGeneration(Int(rnd * 6) + 7) & VbCrlf
strAccumul = strAccumul & VbCrlf

' Fonction CheckSecurityPolitic
Dim arrTestPassword
Dim strTestPassword
arrTestPassword = Array("salut", "Salut1664", "<Salut1664>", "*!Rocky4%*", _
                        PasswordGeneration(Int(rnd * 5) + 7), PasswordGeneration(Int(rnd * 5) + 7), _
                        PasswordGeneration(Int(rnd * 5) + 7), PasswordGeneration(Int(rnd * 5) + 7))
For Each strTestPassword In arrTestPassword
    If CheckSecurityPolitic(strTestPassword) Then
        strAccumul = strAccumul & "Le mot de passe: " & strTestPassword & _
                                  " est conforme à la politique de sécurité :-)" & VbCrlf
    Else
        strAccumul = strAccumul & "Le mot de passe: " & strTestPassword & _
                                   " n'est pas conforme à la politique de sécurité :-(" & VbCrlf
    End If
Next
strAccumul = strAccumul & VbCrlf
' Fonction SecurityPasswordGeneration
strAccumul = strAccumul & "Mot de passe ""sécurisé"": " & SecurityPasswordGeneration() & VbCrlf
strAccumul = strAccumul & "Mot de passe ""sécurisé"": " & SecurityPasswordGeneration()
Msgbox strAccumul & VbCrlf & "       

Remarque :
Voici 3 fonctions en rapport avec le sujet du snippet. Le bout de code qui suit montre une utilisation.
Langage : VBScript
Date ajout : 29/07/2008
Posté par MisterWhiteLapin [Liste]
Function PasswordGeneration(intLen)
    Dim i
    Randomize
    Dim strElmts
    Dim intNbElmts
    strElmts = "abcdefghijklmnopqrstuvwxyz" & _
                "ABCDEFGHIJKLMNOPQRSTUVWXYZ" & _
                "0123456789" & _
                "#?./§,;:!%*$&'<>()[]{}@-_+=|"
    intNbElmts = Len(strElmts)
    PasswordGeneration = ""
    For i = 1 to intLen
        PasswordGeneration = PasswordGeneration & mid(strElmts, Int(rnd * intNbElmts) + 1, 1)
    Next
End Function


Snippets en rapport avec : Aléatoire, Mot, Password, Passe



Codes sources en rapport avec : Aléatoire, Mot, Password, Passe

{Javascript / DHTML} VÉRIFICATION DU NIVEAU DE SÉCURITÉ DU MOT DE PASSE
Cette source est una adaptation du source http://www.csharpfr.com/code.aspx?ID=36129 en javascript q...

{PHP} FONCTION QUI GÉNÉRE UN MOT DE PASSE ALÉATOIRE
Cette fonction permet de générer un mot de passe aléatoire d'une taille donnée ($size) Les caract...

{Visual Basic, VB6, VB.NET, VB 2005} CONNEXION PAR MOT DE PASSE GRÂCE À UNE BDD
Bonjour, voici ma première source sur le site ! J'espère que celle-ci pourra aider des gens ! Il ...

{IRC} ALIAS DE GÉNÉRATION DE MOTS DE PASSE ALÉATOIRES
A utiliser avec modération car il faut arriver à se souvenir du code. Le mieux dans le cas d'un nic...

{Visual Basic, VB6, VB.NET, VB 2005} EFFACER LE MOT DE PASSE DES SESSIONS WINDOWS -NE SE FAIT QU A PARTIR D UN COMPTE ADMINISTRATEUR
Je n'ai fait que mettre en forme la source de hodaking ( script seulement) , elle m'a rendu service ...

{Javascript / DHTML} PROTÉGER UNE PAGE PAR MOT DE PASSE
Ce code sert à protéger une page par mot de passe. Méthode 1 Lors de l'ouverture de celle-ci, un...

{C# / C#.NET} GENERATEUR DE MOT DE PASSE
Un générateur de mot de passe pas très complexe. Il accepte trois paramètres : - Nombre - Ponct...

{ColdFusion} GENERER UN MOT DE PASSE ALÉATOIRE
Je trouve ce code simple et modifiable à souhait :-) ...

{ColdFusion} GÉNÉRER DES MOTS DE PASSE ALÉATOIREMENT
...

{Delphi} GÉNÉRER UN MOT DE PASSE ALÉATOIRE
Génération INSTANTANE d'un mot de passe aléatoire de X lettres ...