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.