title: How to properly encrypt TCP-data so an evil client can't read/decrypt it
body: <p>I'll explain better my problem.</p>
  
  <p>I have a C# client which connects to a Python server, this client should send (just once) some data to the server when the connection is established, this data shouldn't be tampered.</p>
  
  <p>I have no idea about cryptography but I read some algorithms like RSA, where a public key is used for crypt the data and the private key is used for decrypt it.</p>
  
  <p>What I wanna try to do is to create a pair of keys and send the public key to the client, encrypt the data with this key and send the encrypted data to the server, I think using this way the data can't be decrypted nor tampered, every client connected will have a different pair of keys.
  Is this possible? I've been searching but I don't really understand how RSA works.
  Any ideas on how to do this?</p>