I made a simple server program that is able to receive data from 4 different clients at a time. Now I want to send some data with AES-128 Encryption but that should be decoded at the server side. Here is my code for server:
from socket import *
from threading import Thread
def clientHandler():
conn, addr = s.accept()
print addr, "is connected"
while 1:
data = conn.recv(1024)
if not data:
break
print "Received Message", repr(data)
HOST = "" #localhost
PORT = 15000
s = socket(AF_INET, SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(4)
print "Server is runnig"
#Thread(target=clientHandler).start()
#Thread(target=clientHandler).start()
#Thread(target=clientHandler).start()
for i in range(4):
Thread(target=clientHandler).start()
s.close()
And I am sending data like this from my client side
from socket import *
s = socket()
s.connect(("localhost",15000))
s.send()
How should I modify my client code and server code to include AES-128 Encryption inside of it .. Kindly help me in this regard.
Use Python's Crypto module which supports AES. You need a symmetric key (same key used to encrypt and decrypt). The same key can be generated in both server and client if the same passphrase and the initialization vector(IV) are used.
Summary: 1. Same key to be used to encrypt and decrypt 2. Use Crypto.Cipher.AES
AES has methods to generate key, encrypt and decrypt data. Following links have the actual code. pycrypto stackoverflow
Client - Call this method to encrypt your data and send the encrypted data
from Crypto.Cipher import AES
def do_encrypt(message):
obj = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
ciphertext = obj.encrypt(message)
return ciphertext
Server - Receive data and call this method to decrypt the data
from Crypto.Cipher import AES
def do_decrypt(ciphertext):
obj2 = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
message = obj2.decrypt(ciphertext)
return message
This is a sample code, make sure you choose a strong passphrase and IV.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With