document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #!/usr/bin/python
  2.  
  3. import socket
  4. import random
  5. from rsa_math import *
  6.  
  7. def msg_num(message_s):
  8.     np_s = 0
  9.     for char in message_s:
  10.         np_s <<= 8
  11.         np_s += ord(char)
  12.     return np_s
  13.  
  14. def num_msg(np_r):
  15.     nm = []
  16.     while np_r > 0:
  17.         nm.insert(0, chr(np_r & 255))
  18.         np_r >>= 8
  19.     message_r = "".join(nm)
  20.     return message_r
  21.  
  22. def encript(np, e_r, n_r):
  23.     ne_e = pow(np, e_r) % n_r
  24.     return ne_e
  25.  
  26. def desencriptar(ne_r, d, n):
  27.     np_r = pow(ne_r, d) % n
  28.     return np_r
  29.  
  30. def extended_gcd(a, b):
  31.     x, ant_x = 0, 1
  32.     y, ant_y = 1, 0
  33.  
  34.     while b:
  35.         coc = a // b
  36.         a, b = b, a % b
  37.         x, ant_x = ant_x - coc*x, x
  38.         y, ant_y = ant_y - coc*y, y
  39.  
  40.     return (ant_x, ant_y, a)
  41.  
  42. def send(hola):
  43.     server_c.send(hola, ser)
  44.     return
  45.  
  46. def received(serv):
  47.     algo = server_c.recv(1024)  
  48.     return hola
  49.  
  50. def main():
  51.     server = socket.socket()  
  52.     server.bind(("localhost", 1122))
  53.     server.listen(1)  
  54.     print "Waiting for connection"
  55.     print "Conected"
  56.     server_c, direccion = server.accept()
  57.    
  58.     p = 13
  59.     q = 11
  60.     r = p*q
  61.     phi = (p - 1)*(q - 1)
  62.     e = 23
  63.     gcd = 0
  64.    
  65.     while (gcd != 1):  
  66.         gcd = extended_gcd(e, phi)  
  67.                
  68.     d = mod_inver(e, phi)  
  69.    
  70.     send(n, serv)
  71.     send(e, serv)
  72.     print "Sent key"
  73.  
  74.     n_r = received(serv)
  75.     e_r = received(serv)
  76.     print "Key received"
  77.  
  78.     messagee_r = ""
  79.     print "staring"
  80.     while  (message_r != "End") :
  81.  
  82.         message_s = "cristhian"
  83.         np_s = msg_num(message_s)
  84.         ne_s = encrypt(np_e, e_r, n_r)
  85.         enviar(ne_e)
  86.         print "Send"
  87.        
  88.         ne_r = received()
  89.         np_r = desencrypt(ne_r, d, n)
  90.         message_r = num_msg(np_r)
  91.         print "Received: ", message_r
  92.    
  93.     server.close()
  94.     server_c.close()
  95.    
  96. main() 
  97. ()
');