Skip to content

Commit 4c4860b

Browse files
committed
Fix multi-layer encryption bugs and add performance visualization
1 parent 1b495da commit 4c4860b

File tree

3 files changed

+80
-7
lines changed

3 files changed

+80
-7
lines changed

benchmark.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from luther_algorithm import LuthersGoldenAlgorithm
2+
import time
3+
4+
golden = LuthersGoldenAlgorithm()
5+
print("Benchmarking Luther's Golden Algorithm...")
6+
7+
data_sizes = [1000, 10000, 100000]
8+
9+
for size in data_sizes:
10+
data = b'A' * size
11+
start = time.time()
12+
for _ in range(10):
13+
encrypted = golden.encrypt(data)
14+
decrypted = golden.decrypt(encrypted)
15+
assert data == decrypted
16+
end = time.time()
17+
avg_time = (end - start) / 10
18+
print(f"Size {size} bytes: {avg_time:.4f} seconds per operation")
19+
20+
print("Benchmark complete!")

luther_algorithm/luther_algorithm.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,11 @@ def _super_encrypt_layer(self, data, layer):
7676
# Different encryption for each layer
7777
if layer == 0:
7878
# Layer 0: AES with deterministic quantum-derived key
79-
seed = int.from_bytes(hashlib.sha256(data[:16]).digest(), 'big') % (2**16)
79+
seed = 12345 # fixed seed for consistency
8080
key = hashlib.sha256(str(self._quantum_factor_parallel(seed)).encode()).digest()
8181
return self._aes_gcm(data, key, True)
8282
elif layer == 1:
83-
# Layer 2: Post-quantum if available
83+
# Layer 1: Post-quantum if available
8484
if self.pq:
8585
ct, ss = encapsulate(self.kem_pk)
8686
key = hashlib.sha256(ss).digest()
@@ -89,12 +89,13 @@ def _super_encrypt_layer(self, data, layer):
8989
key = get_random_bytes(32)
9090
return key + self._aes_gcm(data, key, True)
9191
else:
92-
# Layer 3: Hybrid with quantum boost
92+
# Layer 2: Hybrid with quantum boost
9393
key = get_random_bytes(32)
94+
original_key = key
9495
if self.quantum_boost:
9596
factors = self._quantum_factor_parallel(int.from_bytes(key, 'big') % 2**20)
9697
key = hashlib.sha256(str(factors).encode()).digest()
97-
return self._aes_gcm(data, key, True)
98+
return original_key + self._aes_gcm(data, key, True)
9899

99100
def encrypt(self, data, pub_key=None):
100101
"""Super Golden encryption with adaptive intelligence and multiple layers"""
@@ -144,7 +145,7 @@ def _super_decrypt_layer(self, data, layer):
144145

145146
# Reverse the encryption layers
146147
if layer == 2:
147-
# Layer 3: Hybrid with quantum boost
148+
# Layer 2: Hybrid with quantum boost
148149
key_size = 32
149150
key_data, enc = data[:key_size], data[key_size:]
150151
key = key_data
@@ -153,7 +154,7 @@ def _super_decrypt_layer(self, data, layer):
153154
key = hashlib.sha256(str(factors).encode()).digest()
154155
return self._aes_gcm(enc, key, False)
155156
elif layer == 1:
156-
# Layer 2: Post-quantum if available
157+
# Layer 1: Post-quantum if available
157158
if self.pq:
158159
key_size = 768
159160
key_data, enc = data[:key_size], data[key_size:]
@@ -166,7 +167,7 @@ def _super_decrypt_layer(self, data, layer):
166167
return self._aes_gcm(enc, key_data, False)
167168
else:
168169
# Layer 0: AES with deterministic quantum-derived key
169-
seed = int.from_bytes(hashlib.sha256(data[:16]).digest(), 'big') % (2**16)
170+
seed = 12345 # fixed seed for consistency
170171
key = hashlib.sha256(str(self._quantum_factor_parallel(seed)).encode()).digest()
171172
return self._aes_gcm(data, key, False)
172173

visualize.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
from luther_algorithm import LuthersGoldenAlgorithm
2+
import time
3+
4+
golden = LuthersGoldenAlgorithm()
5+
print("=== LUTHER'S GOLDEN ALGORITHM PERFORMANCE VISUALIZATION ===")
6+
print()
7+
8+
# Test different data sizes
9+
sizes = [100, 1000, 10000, 50000, 100000]
10+
results = []
11+
12+
print("Running benchmarks...")
13+
for size in sizes:
14+
data = b'A' * size
15+
times = []
16+
for _ in range(5): # 5 runs for averaging
17+
start = time.time()
18+
encrypted = golden.encrypt(data)
19+
decrypted = golden.decrypt(encrypted)
20+
end = time.time()
21+
times.append(end - start)
22+
assert data == decrypted
23+
24+
avg_time = sum(times) / len(times)
25+
overhead = len(encrypted) - size
26+
results.append((size, avg_time, overhead))
27+
28+
print("\nPERFORMANCE RESULTS:")
29+
print("=" * 60)
30+
print("Data Size | Time (sec) | Overhead | Efficiency")
31+
print("-" * 60)
32+
33+
for size, avg_time, overhead in results:
34+
efficiency = size / (size + overhead) * 100
35+
print(f"{size:8d} | {avg_time:.6f} | {overhead:8d} | {efficiency:.1f}%")
36+
37+
print("\nVISUALIZATION:")
38+
print("=" * 60)
39+
40+
# Simple ASCII bar chart for time
41+
max_time = max(r[1] for r in results)
42+
for size, avg_time, _ in results:
43+
bar_length = int(avg_time / max_time * 40)
44+
bar = "#" * bar_length
45+
print(f"{size:8d} | {bar}")
46+
47+
print("\nSECURITY LEVEL:", golden.get_security_level())
48+
print("POST-QUANTUM:", "Available" if golden.pq else "Not Available")
49+
print("QUANTUM BOOST:", "Enabled" if golden.quantum_boost else "Disabled")
50+
print("ENCRYPTION LAYERS:", golden.layers)
51+
52+
print("\n=== VISUALIZATION COMPLETE ===")

0 commit comments

Comments
 (0)