Seicas commited on
Commit
b97d032
·
verified ·
1 Parent(s): 4daed1e

Delete secure_storage.py

Browse files
Files changed (1) hide show
  1. secure_storage.py +0 -115
secure_storage.py DELETED
@@ -1,115 +0,0 @@
1
- from cryptography.fernet import Fernet
2
- import json
3
- import os
4
- import base64
5
- import hashlib
6
- from typing import Dict, Any, Optional
7
- from datetime import datetime, timedelta
8
-
9
- class SecureStorage:
10
- """Hassas verileri şifreleyerek saklamak için sınıf"""
11
-
12
- def __init__(self, storage_dir: str = "./secure_data"):
13
- """
14
- Args:
15
- storage_dir: Şifreli verilerin saklanacağı dizin
16
- """
17
- # Depolama dizinini oluştur
18
- os.makedirs(storage_dir, exist_ok=True)
19
- self.storage_dir = storage_dir
20
-
21
- # Şifreleme anahtarı
22
- self.key = os.environ.get("ENCRYPTION_KEY")
23
- if not self.key:
24
- # Anahtar yoksa, yeni bir anahtar oluştur ve kaydet
25
- self.key = Fernet.generate_key().decode()
26
- print(f"YENİ ŞİFRELEME ANAHTARI OLUŞTURULDU! Bunu güvenli bir yerde saklayın: {self.key}")
27
-
28
- # Fernet şifreleme nesnesi
29
- self.fernet = Fernet(self.key.encode() if isinstance(self.key, str) else self.key)
30
-
31
- def store_data(self, data: Dict[str, Any], session_id: str, ttl_days: int = 30) -> str:
32
- """
33
- Hassas verileri şifreleyerek saklar
34
-
35
- Args:
36
- data: Saklanacak veriler
37
- session_id: Benzersiz oturum kimliği
38
- ttl_days: Verilerin saklanacağı süre (gün)
39
-
40
- Returns:
41
- Dosya yolu
42
- """
43
- # Meta verileri ekle
44
- data_with_meta = {
45
- "data": data,
46
- "created_at": datetime.now().isoformat(),
47
- "expires_at": (datetime.now() + timedelta(days=ttl_days)).isoformat(),
48
- "session_id": session_id
49
- }
50
-
51
- # JSON'a dönüştür ve şifrele
52
- json_data = json.dumps(data_with_meta)
53
- encrypted_data = self.fernet.encrypt(json_data.encode())
54
-
55
- # Dosyaya kaydet
56
- file_path = os.path.join(self.storage_dir, f"{session_id}.enc")
57
- with open(file_path, "wb") as f:
58
- f.write(encrypted_data)
59
-
60
- return file_path
61
-
62
- def retrieve_data(self, session_id: str) -> Optional[Dict[str, Any]]:
63
- """
64
- Şifreli verileri getirir ve çözer
65
-
66
- Args:
67
- session_id: Benzersiz oturum kimliği
68
-
69
- Returns:
70
- Çözülmüş veriler veya None (eğer yoksa)
71
- """
72
- file_path = os.path.join(self.storage_dir, f"{session_id}.enc")
73
-
74
- if not os.path.exists(file_path):
75
- return None
76
-
77
- try:
78
- # Şifreli veriyi oku
79
- with open(file_path, "rb") as f:
80
- encrypted_data = f.read()
81
-
82
- # Şifreyi çöz
83
- decrypted_data = self.fernet.decrypt(encrypted_data).decode()
84
- data_with_meta = json.loads(decrypted_data)
85
-
86
- # Süre kontrolü
87
- expires_at = datetime.fromisoformat(data_with_meta["expires_at"])
88
- if datetime.now() > expires_at:
89
- # Süresi dolmuş veriler
90
- os.remove(file_path) # Dosyayı sil
91
- return None
92
-
93
- return data_with_meta["data"]
94
-
95
- except Exception as e:
96
- print(f"Veri çözme hatası: {str(e)}")
97
- return None
98
-
99
- def delete_data(self, session_id: str) -> bool:
100
- """
101
- Şifreli verileri siler
102
-
103
- Args:
104
- session_id: Benzersiz oturum kimliği
105
-
106
- Returns:
107
- Başarılı olup olmadığı
108
- """
109
- file_path = os.path.join(self.storage_dir, f"{session_id}.enc")
110
-
111
- if os.path.exists(file_path):
112
- os.remove(file_path)
113
- return True
114
-
115
- return False