-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_luthers_algorithm.py
More file actions
72 lines (60 loc) · 2.63 KB
/
test_luthers_algorithm.py
File metadata and controls
72 lines (60 loc) · 2.63 KB
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
"""
Comprehensive tests and benchmarks for Luther's Algorithm
"""
import time
import unittest
from luther_algorithm import LuthersGoldenAlgorithm
from cryptography.hazmat.primitives.asymmetric import rsa
class TestLuthersGoldenAlgorithm(unittest.TestCase):
def setUp(self):
self.plaintext_small = b"Hello, World!"
self.plaintext_large = b"A" * 10**6 # 1MB data
self.golden = LuthersGoldenAlgorithm()
# Generate RSA keys for testing
from Crypto.PublicKey import RSA
self.rsa_key = RSA.generate(2048)
def test_golden_encrypt_decrypt_small(self):
"""Test golden encryption for small data"""
encrypted = self.golden.encrypt(self.plaintext_small)
decrypted = self.golden.decrypt(encrypted)
self.assertEqual(self.plaintext_small, decrypted)
def test_golden_encrypt_decrypt_large(self):
"""Test golden encryption for large data"""
encrypted = self.golden.encrypt(self.plaintext_large)
decrypted = self.golden.decrypt(encrypted)
self.assertEqual(self.plaintext_large, decrypted)
def test_golden_sign_verify(self):
"""Test golden signing and verification"""
signature = self.golden.sign(self.plaintext_small)
verified = self.golden.verify(self.plaintext_small, signature)
self.assertTrue(verified)
def test_golden_sign_verify_invalid(self):
"""Test golden signing with invalid data"""
signature = self.golden.sign(self.plaintext_small)
verified = self.golden.verify(b"Invalid", signature)
self.assertFalse(verified)
def test_golden_quantum_factor(self):
"""Test golden quantum factoring"""
factors = self.golden._quantum_factor_parallel(1025) # > 2**10
self.assertIn(5, factors)
self.assertIn(205, factors) # 1025 = 5 * 205
def benchmark_golden_encryption(self):
"""Benchmark golden encryption performance"""
data_sizes = [100, 1000, 10000, 100000]
print("\nBenchmarking Luther's Golden Algorithm:")
for size in data_sizes:
data = b"A" * size
start_time = time.time()
for _ in range(10): # Average over 10 runs
encrypted = self.golden.encrypt(data)
self.golden.decrypt(encrypted)
end_time = time.time()
avg_time = (end_time - start_time) / 10
print(f" Size {size} bytes: {avg_time:.4f} seconds")
if __name__ == '__main__':
# Run unit tests
unittest.main(verbosity=2)
# Run benchmarks
test_instance = TestLuthersGoldenAlgorithm()
test_instance.setUp()
test_instance.benchmark_golden_encryption()