Robustesse d’un mot de passe

Contexte

La robustesse d’un mot de passe est la mesure de sa capacité à résister au cassage, par une attaque par force brute ou toute autre technique (social engineering par exemple).

Pour cet exercice, le mot de passe contient uniquement des lettres latines ASCII ou des chiffres. Une version plus élaborée pourrait imposer la présence de caractères spéciaux.

Un mot de passe est ici considéré comme fort si:

Environnement de travail

Pour cet exercice, vous devez utiliser en priorité le fichier squelette ex05-password.py. IMPORTANT : Enregistrez le avec Right Click + Save Link As... pour conserver l’encodage.

Selon la convention de structuration des modules, ce fichier sera structuré en quatre parties :

  1. Imports et définition des variables globales ;
  2. Définition des fonctions secondaires ;
  3. Définition de la fonction principale ;
  4. Appel protégé de la fonction principale.

Objectifs

L’objectif est d’écrire une fonction check_password() :

Vérifier le bon fonctionnement de la fonction en effectuant un appel depuis main() et en affichant la valeur de retour (les doctests de la fonction donnent des exemples d’appel et les valeurs de retour correspondantes).

Informations complémentaires

Il existe plusieurs méthodes pourt résoudre ce problème. Une façon efficace de faire est de générer un booléen pour chacune des conditions nécessaires et de retourner le résultat de l’opération “ET LOGIQUE” appliquée à l’ensemble des booléens. Avec cette structure il est simple et lisible de rajouter des conditions supplémentaires sans modifier l’architecture du code.

Pour une plus grande efficacité algorithmique, on peut également imaginer interrompre la validation dès qu’une condition n’est pas satisfaite.

Python dispose de méthodes de chaines de caractères qui peuvent être utiles :

L’opération “ET LOGIQUE” en Python est assurée par l’opérateur and.

Doctests

Une fois la fonction opérationnelle pour quelques arguments, ET SEULEMENT DANS CE CAS, lancer les doctests dans un terminal:

$ python -m doctest ex05_password.py -v

La totalité des doctests doivent réussir.