v2 du système
This commit is contained in:
1 parent
cfc1c532e2
commit
6049131f88
7 files changed
+266
No files matched your search
@@ -0,0 +1,35 @@
|
||||
import re
|
||||
import pyotp
|
||||
import hashlib
|
||||
import hmac
|
||||
|
||||
def validate_password_strength(password):
|
||||
"""Vérifie que le mot de passe respecte les critères de sécurité stricts."""
|
||||
if len(password) < 12:
|
||||
return "Le mot de passe doit contenir au moins 12 caractères."
|
||||
if not re.search(r"[A-Z]", password):
|
||||
return "Le mot de passe doit contenir au moins une majuscule."
|
||||
if not re.search(r"[a-z]", password):
|
||||
return "Le mot de passe doit contenir au moins une minuscule."
|
||||
if not re.search(r"[0-9]", password):
|
||||
return "Le mot de passe doit contenir au moins un chiffre."
|
||||
if not re.search(r"[!@#$%^&*(),.?\":{}|<>]", password):
|
||||
return "Le mot de passe doit contenir au moins un caractère spécial."
|
||||
return None
|
||||
|
||||
def hash_password(password):
|
||||
"""Hachage sécurisé du mot de passe."""
|
||||
return hashlib.sha256(password.encode()).hexdigest()
|
||||
|
||||
def verify_password(stored_hash, provided_password):
|
||||
"""Vérifie un mot de passe par rapport à son haché."""
|
||||
return hmac.compare_digest(stored_hash, hash_password(provided_password))
|
||||
|
||||
def generate_totp_secret():
|
||||
"""Génère une clé secrète pour le 2FA."""
|
||||
return pyotp.random_base32()
|
||||
|
||||
def verify_totp(secret, code):
|
||||
"""Vérifie le code TOTP fourni par l'application d'authentification."""
|
||||
totp = pyotp.TOTP(secret)
|
||||
return totp.verify(code)
|
||||
Reference in new issue
Block a user