3
3
4
4
import multiprocessing
5
5
import settings
6
+ import pickle
6
7
7
8
from socket import *
8
9
from threading import Thread
9
10
from multiprocessing import Process , Manager
11
+ from Crypto .PublicKey import RSA
12
+ from Crypto .Util import randpool
10
13
11
14
12
15
class Operacoes2Servidor :
@@ -19,17 +22,14 @@ def __init__(self, ip):
19
22
self .server_socket .listen (5 )
20
23
self .MAX_PACOTE = 1024
21
24
25
+ blah = randpool .RandomPool ()
26
+ self .RSAKey = RSA .generate (1024 , blah .get_bytes )
27
+ self .RSAPubKey = self .RSAKey .publickey ()
28
+
22
29
def enviar (self , valor , endereco ):
23
- aux = 0
24
- #tam = len(valor)
25
- #if tam > self.MAX_PACOTE:
26
- # for i in xrange(tam / self.MAX_PACOTE):
27
- # pacote = valor[i*self.MAX_PACOTE:(i+1)*self.MAX_PACOTE]
28
- # self.server_socket.sendto(pacote, endereco)
29
- #else:
30
- # self.server_socket.sendto(valor, endereco)
31
30
print '\033 [0;32mResultado: \033 [1;33m{}\033 [0m\n ' .format (valor )
32
- self .conn .send (str (valor ))
31
+ valor = self .clientePubKey .encrypt (str (valor ), 32 )[0 ]
32
+ self .conn .send (valor )
33
33
self .conn .close ()
34
34
35
35
def soma (self , x , y ):
@@ -59,10 +59,13 @@ def levenshtein(self, a, b):
59
59
return str (current [n ])
60
60
61
61
def iniciar (self ):
62
- while ( 1 ) :
62
+ while 1 :
63
63
self .conn , addr = self .server_socket .accept ()
64
- recv_data = self .conn .recv (1024 )
65
- data = recv_data .split ()
64
+ self .clientePubKey = pickle .loads (self .conn .recv (1024 ))
65
+ self .conn .send (pickle .dumps (self .RSAPubKey ))
66
+
67
+ data = self .RSAKey .decrypt (self .conn .recv (1024 ))
68
+ data = data .split ()
66
69
args = '\033 [0;32m e \033 [1;33m' .join (data [1 :])
67
70
print '\033 [1;33m{}\033 [0;32m de \033 [1;33m{}\033 [0m' .format (data [0 ], args )
68
71
0 commit comments