File size: 1,111 Bytes
2c745dd
 
 
69de4ca
2c745dd
 
 
 
 
 
1e669eb
2c745dd
 
 
 
69de4ca
 
 
2c745dd
69de4ca
2c745dd
 
69de4ca
 
2c745dd
69de4ca
 
 
2c745dd
69de4ca
 
2c745dd
 
 
 
 
69de4ca
2c745dd
 
 
69de4ca
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 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)