# modules/crypto_engine.py import hashlib import json import secrets from typing import Dict, Any class CryptoEngine: def __init__(self): print("CryptoEngine geladen") self.algorithm = "sha256" def hash_text(self, text: str) -> str: if not text: return "" return hashlib.sha256(text.encode("utf-8")).hexdigest() def generate_token(self, length: int = 32) -> str: return secrets.token_hex(length) def verify_hash(self, text: str, hashed: str) -> bool: return self.hash_text(text) == hashed def secure_payload(self, payload: Dict[str, Any]) -> Dict[str, Any]: if not payload: payload = {} # Sort_keys=True sorgt für eine deterministische und stabile String-Form payload_string = json.dumps(payload, sort_keys=True) payload_hash = self.hash_text(payload_string) return { "payload": payload, "hash": payload_hash, "algorithm": self.algorithm, } def create_session_key(self) -> str: return secrets.token_urlsafe(64)