import socket from chainguard.encryption import AESCipher from chainguard.blockchain_logger import BlockchainLogger class SecureDataTransfer: def __init__(self, password: str, host: str = 'localhost', port: int = 12345): self.cipher = AESCipher(password) self.host = host self.port = port self.blockchain_logger = BlockchainLogger() def send_data(self, data: str): """ Encrypts and sends data over the network, then logs it in the blockchain. """ encrypted_data = self.cipher.encrypt(data) with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((self.host, self.port)) s.sendall(encrypted_data.encode()) print(f"Sent encrypted data: {encrypted_data}") # Log the transaction in the blockchain self.blockchain_logger.log_data(encrypted_data) def receive_data(self): """ Receives encrypted data, decrypts it, and logs it in the blockchain. """ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((self.host, self.port)) s.listen() conn, addr = s.accept() with conn: print(f"Connected by {addr}") encrypted_data = conn.recv(1024).decode() decrypted_data = self.cipher.decrypt(encrypted_data) print(f"Received encrypted data: {encrypted_data}") print(f"Decrypted data: {decrypted_data}") # Log the transaction in the blockchain self.blockchain_logger.log_data(encrypted_data) return decrypted_data def validate_blockchain(self): """ Validates the blockchain's integrity. """ return self.blockchain_logger.is_blockchain_valid()