encrypt_decrypt_aes_01.py

# =========================================================
# For more information: www.blog.pythonlibrary.org/
#     2016/05/18/ python-3-an-intro-to-encryption/
#
# Documentation: pythonhosted.org/pycrypto/
#     toc-Crypto.Cipher.AES-module.html
#
# Note: AES message must be a multiple of 16
# =========================================================

from Crypto.Cipher import AES

# ---------------------------------------------------------
# --- global variables
# ---------------------------------------------------------

key = 'This is a key123'

msg = 'The answer is maybe, not yes or no'

# ---------------------------------------------------------
# --- functions
# ---------------------------------------------------------

# --- pad string to a multiple of 'size'

def pad(size,text):
    while len(text) % size != 0:
        text += ' '
    return text

# ---------------------------------------------------------
# -- main
# ---------------------------------------------------------


# ---------------------------------------------------------
print('--- encrypt --------------------------------------')
# ---------------------------------------------------------

aes = AES.new(key, AES.MODE_CBC, 'This is an IV456')

ciphertext = aes.encrypt(pad(16,msg))

print('AES ciphertext is {}'.format(type(ciphertext)))
print('AES ciphertext = {}'.format(ciphertext))


# ---------------------------------------------------------
print('--- decrypt --------------------------------------')
# ---------------------------------------------------------

aes2 = AES.new(key, AES.MODE_CBC, 'This is an IV456')

msg2 = aes2.decrypt(ciphertext)

print('AES msg2 is {}'.format(type(msg2)))
print('AES msg2 = {}'.format(msg2))