def recv_full_mess_RSA(socket, keys): """ Receive message encrypted with RSA in arbitrary size, decrypt it and return plaintext string :param socket: the socket to receive the message :param keys: public keys of the sender to decrypt message :return: plaintext string of decrypted message in arbitrary size """ full_mess = b'' key_len = utils.byte_size(keys['n']) new_mess = True mess = socket.recv(HEADER).decode(FORMAT) while True: if new_mess: len_mess = int(mess[:HEADER]) new_mess = False mess = socket.recv(HEADER) full_mess += mess decrypted_mess = [] if len(full_mess) == len_mess: if len_mess > key_len: len_chunk = key_len chunks = [ full_mess[i:(i + len_chunk)] for i in range(0, len_mess, len_chunk) ] for chunk in chunks: decrypted_mess.append( decrypt(chunk, keys['n'], keys['d']).decode(FORMAT)) return "".join(decrypted_mess) else: return decrypt(full_mess, keys['n'], keys['d']).decode(FORMAT)
def chat(server_n, server_d): out_mess = input("Me> ") out_mess = encrypt(bytes(out_mess, FORMAT), n, e) client.send(bytes(out_mess, FORMAT)) in_mess = client.recv(1024).decode(FORMAT) in_mess = decrypt(in_mess, server_n, server_d).decode(FORMAT) print(f"Other> {in_mess}")
def chat(client, client_n, client_d): in_mess = client.recv(1024).decode(FORMAT) in_mess = decrypt(in_mess, client_n, client_d) print(f"Other> {in_mess}") out_mess = input("Me> ") out_mess = encrypt(bytes(out_mess, FORMAT), n, e) client.send(out_mess)