Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Simple Python example of AES in ECB mode.
from hashlib import md5
from base64 import b64decode
from base64 import b64encode
from Crypto.Cipher import AES
# Padding for the input string --not
# related to encryption itself.
BLOCK_SIZE = 16 # Bytes
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * \
chr(BLOCK_SIZE - len(s) % BLOCK_SIZE)
unpad = lambda s: s[:-ord(s[len(s) - 1:])]
class AESCipher:
c = AESCipher('password').encrypt('message')
m = AESCipher('password').decrypt(c)
Tested under Python 3 and PyCrypto 2.6.1.
def __init__(self, key):
self.key = md5(key.encode('utf8')).hexdigest()
def encrypt(self, raw):
raw = pad(raw)
cipher =, AES.MODE_ECB)
return b64encode(cipher.encrypt(raw))
def decrypt(self, enc):
enc = b64decode(enc)
cipher =, AES.MODE_ECB)
return unpad(cipher.decrypt(enc)).decode('utf8')
# Just a test.
msg = input('Message...: ')
pwd = input('Password..: ')
print('Ciphertext:', AESCipher(pwd).encrypt(msg))

This comment has been minimized.

Copy link

SolarDon commented Apr 12, 2018

The Class and functions are good, but you may want to beef up the test to:

msg = raw_input('Message...: ')
pwd = raw_input('Password..: ')
cipher_text = AESCipher(pwd).encrypt(msg)
print('Ciphertext:', cipher_text)
clear_text= AESCipher(pwd).decrypt(cipher_text)
print('Cleartext:', clear_text)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.