Aller au contenu

Vérifier un mot de passe⚓︎

On veut une fonction verifie_mdp pour vérifier le mot de passe d'un identifiant.

On suppose qu'on dispose déjà de fonctions demande_mdp et message_erreur.

Les deux versions suivantes sont-elles équivalentes ou non ?

Bonne pratique

Une méthode avec plus de sécurité consiste à comparer les signatures (des hash) du mot de passe entré et du mot de passe correct. Une base de données ne devrait pas contenir de mot de passe en clair.

🐍 Script Python
def verifie_mdp():
    # Version itérative
    mdp = demande_mdp()
    while mdp != "secret_1234":
        message_erreur()
        mdp = demande_mdp()
🐍 Script Python
def verifie_mdp():
    # Version récursive
    mdp = demande_mdp()
    if mdp != "secret_1234":
        message_erreur()
        verifie_mdp()
Réponse

Oui, presque équivalente.

La différence principale étant qu'au bout de 1000 erreurs, Python arrêtera la fonction récursive, alors que l'itérative peut continuer à l'infini.