def loop(self):
        self.socket_r, self.socket_w = yield from asyncio.open_connection(
            servidor, puerto, loop=self.main_loop)

        secreto = getRandomInteger(10)
        generado = pow(Cifrado.generador, secreto) % Cifrado.modulo

        self.socket_w.write(
            json.dumps({
                'gen-key': True,
                'key': generado
            }).encode())

        respuesta_servidor = yield from self.socket_r.read(100)
        respuesta_servidor = json.loads(respuesta_servidor.decode())
        generado_servidor = respuesta_servidor['gen']

        key = str(pow(generado_servidor, secreto) % Cifrado.modulo)
        key = Cifrado.normalizar_key(key)

        self.enigma = Cifrado.Enigma(key)

        while True:
            data = yield from self.socket_r.read(100)
            mensaje = self.enigma.decifrar(data)
            self.recibir_mensaje(mensaje)
Exemple #2
0
    def data_received(self, data):
        if self.estado == 'no-key':
            mensaje = json.loads(data.decode())
            if mensaje['gen-key']:
                generado_cliente = mensaje['key']
                if generado_cliente:
                    secreto = getRandomInteger(10)
                    key = str(pow(generado_cliente, secreto) % Cifrado.modulo)
                    generado = pow(Cifrado.generador, secreto) % Cifrado.modulo

                    key = Cifrado.normalizar_key(key)

                    self.estado = 'key-ready'
                    self.enigma = Cifrado.Enigma(key)
                    self.transport.write(json.dumps({'gen': generado}).encode())
        
        elif self.estado == 'key-ready':
            # Aqui enviamos el mensaje a todos los clientes conectados
            self.propagar('{}: {}'.format(self.nombre_cliente,
                                          self.enigma.decifrar(data)))
Exemple #3
0
    def data_received(self, data):
        if self.estado == 'no-key':
            mensaje = json.loads(data.decode())
            if mensaje['gen-key']:
                generado_cliente = mensaje['key']
                if generado_cliente:
                    secreto = getRandomInteger(10)
                    key = str(pow(generado_cliente, secreto) % Cifrado.modulo)
                    generado = pow(Cifrado.generador, secreto) % Cifrado.modulo

                    key = Cifrado.normalizar_key(key)

                    self.estado = 'key-ready'
                    self.enigma = Cifrado.Enigma(key)
                    self.transport.write(
                        json.dumps({
                            'gen': generado
                        }).encode())

        elif self.estado == 'key-ready':
            # Aqui enviamos el mensaje a todos los clientes conectados
            self.propagar('{}: {}'.format(self.nombre_cliente,
                                          self.enigma.decifrar(data)))
Exemple #4
0
    def loop(self):
        self.socket_r, self.socket_w = yield from asyncio.open_connection(servidor,
                                                                          puerto,
                                                                          loop=self.main_loop)

        secreto = getRandomInteger(10)
        generado = pow(Cifrado.generador, secreto) % Cifrado.modulo

        self.socket_w.write(json.dumps({'gen-key': True,
                                        'key': generado}).encode())

        respuesta_servidor = yield from self.socket_r.read(100)
        respuesta_servidor = json.loads(respuesta_servidor.decode())
        generado_servidor = respuesta_servidor['gen']

        key = str(pow(generado_servidor, secreto) % Cifrado.modulo)
        key = Cifrado.normalizar_key(key)

        self.enigma = Cifrado.Enigma(key)

        while True:
            data = yield from self.socket_r.read(100)
            mensaje = self.enigma.decifrar(data)
            self.recibir_mensaje(mensaje)