Vérifier un mot de passe
On veut une fonction vérifie_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 vérifie_mdp():
# Version itérative
mdp = demande_mdp()
while mdp != "secret_1234":
message_erreur()
mdp = demande_mdp()
🐍 Script Python
def vérifie_mdp():
# Version récursive
mdp = demande_mdp()
if mdp != "secret_1234":
message_erreur()
vérifie_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.