Enviar cadenas cifradas usando socket en Python

Hice un progtwig de servidor simple que puede recibir datos de 4 clientes diferentes a la vez. Ahora quiero enviar algunos datos con el cifrado AES-128, pero eso debería decodificarse en el lado del servidor. Aquí está mi código para el servidor:

from socket import * from threading import Thread def clientHandler(): conn, addr = s.accept() print addr, "is connected" while 1: data = conn.recv(1024) if not data: break print "Received Message", repr(data) HOST = "" #localhost PORT = 15000 s = socket(AF_INET, SOCK_STREAM) s.bind((HOST, PORT)) s.listen(4) print "Server is runnig" #Thread(target=clientHandler).start() #Thread(target=clientHandler).start() #Thread(target=clientHandler).start() for i in range(4): Thread(target=clientHandler).start() s.close() 

Y estoy enviando datos como este desde mi lado del cliente

 from socket import * s = socket() s.connect(("localhost",15000)) s.send() 

¿Cómo debo modificar mi código de cliente y el código del servidor para incluir el cifrado AES-128 en su interior? Por favor, ayúdenme a este respecto.

Utilice el módulo Crypto de Python que admite AES. Necesita una clave simétrica (la misma clave utilizada para cifrar y descifrar). Se puede generar la misma clave tanto en el servidor como en el cliente si se utilizan la misma frase de contraseña y el vector de inicialización (IV).

Resumen: 1. La misma clave que se utilizará para cifrar y descifrar 2. Utilice Crypto.Cipher.AES

AES tiene métodos para generar claves, cifrar y descifrar datos. Los siguientes enlaces tienen el código real. pycrypto stackoverflow

Cliente: llame a este método para cifrar sus datos y enviar los datos cifrados.

 from Crypto.Cipher import AES def do_encrypt(message): obj = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456') ciphertext = obj.encrypt(message) return ciphertext 

Servidor: reciba datos y llame a este método para descifrar los datos

 from Crypto.Cipher import AES def do_decrypt(ciphertext): obj2 = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456') message = obj2.decrypt(ciphertext) return message 

Este es un código de muestra, asegúrese de elegir una frase de contraseña fuerte y IV.