import os import bcrypt from cryptography.fernet import Fernet from modules.logger import log_event def generer_cle_secrete(): cle = Fernet.generate_key() print("\n" + "="*60) print("⚠️ CLÉ DE CRYPTAGE GÉNÉRÉE (À CONSERVER PRÉCIEUSEMENT) ⚠️") print(f"AETHAS_ENCRYPTION_KEY={cle.decode('utf-8')}") print("Copiez cette ligne dans votre fichier .env") print("="*60 + "\n") return cle def obtenir_fernet(): cle = os.getenv("AETHAS_ENCRYPTION_KEY") if not cle: log_event("CRITICAL", "AUTH", "Clé de cryptage manquante !") raise Exception("AETHAS_ENCRYPTION_KEY introuvable dans l'environnement.") return Fernet(cle.encode('utf-8')) def crypter_donnee(donnee_claire): return obtenir_fernet().encrypt(donnee_claire.encode('utf-8')).decode('utf-8') def decrypter_donnee(donnee_cryptee): return obtenir_fernet().decrypt(donnee_cryptee.encode('utf-8')).decode('utf-8') def hasher_mot_de_passe(mot_de_passe): return bcrypt.hashpw(mot_de_passe.encode('utf-8'), bcrypt.gensalt()).decode('utf-8') def verifier_mot_de_passe(mot_de_passe_clair, hash_enregistre): return bcrypt.checkpw(mot_de_passe_clair.encode('utf-8'), hash_enregistre.encode('utf-8')) # CORRECTION : Le hash est généré mathématiquement au chargement pour garantir que Xavier2026! fonctionne IDENTIFIANTS_ADMIN = { "email": "admin@mail.aethas38.duckdns.org", "mot_de_passe_hash": hasher_mot_de_passe("Xavier2026!"), "role": "Dieu tout puissant" }