Exemple #1
0
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)
Exemple #2
0
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}")
Exemple #3
0
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)