Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- import socket
- import random
- from rsa_math import *
- def msg_num(message_s):
- np_s = 0
- for char in message_s:
- np_s <<= 8
- np_s += ord(char)
- return np_s
- def num_msg(np_r):
- nm = []
- while np_r > 0:
- nm.insert(0, chr(np_r & 255))
- np_r >>= 8
- message_r = "".join(nm)
- return message_r
- def encript(np, e_r, n_r):
- ne_e = pow(np, e_r) % n_r
- return ne_e
- def desencriptar(ne_r, d, n):
- np_r = pow(ne_r, d) % n
- return np_r
- def extended_gcd(a, b):
- x, ant_x = 0, 1
- y, ant_y = 1, 0
- while b:
- coc = a // b
- a, b = b, a % b
- x, ant_x = ant_x - coc*x, x
- y, ant_y = ant_y - coc*y, y
- return (ant_x, ant_y, a)
- def send(hola):
- server_c.send(hola, ser)
- return
- def received(serv):
- algo = server_c.recv(1024)
- return hola
- def main():
- server = socket.socket()
- server.bind(("localhost", 1122))
- server.listen(1)
- print "Waiting for connection"
- print "Conected"
- server_c, direccion = server.accept()
- p = 13
- q = 11
- r = p*q
- phi = (p - 1)*(q - 1)
- e = 23
- gcd = 0
- while (gcd != 1):
- gcd = extended_gcd(e, phi)
- d = mod_inver(e, phi)
- send(n, serv)
- send(e, serv)
- print "Sent key"
- n_r = received(serv)
- e_r = received(serv)
- print "Key received"
- messagee_r = ""
- print "staring"
- while (message_r != "End") :
- message_s = "cristhian"
- np_s = msg_num(message_s)
- ne_s = encrypt(np_e, e_r, n_r)
- enviar(ne_e)
- print "Send"
- ne_r = received()
- np_r = desencrypt(ne_r, d, n)
- message_r = num_msg(np_r)
- print "Received: ", message_r
- server.close()
- server_c.close()
- main()
- ()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement