#-*- coding: utf-8 -*-
# (c) 2012, 2015 Anders Andersen
# See http://www.cs.uit.no/~aa/dist/tools/py/COPYING for details

# Load modules
import os
from hashlib import sha256
from Crypto import Random
from Crypto.Cipher import AES
from Crypto.Util import Counter

# Shared values
pwd = "My secret password"
txt = "Attack at dawn"
# Can use "irv = os.urandom(AES.block_size)"
irv = Random.new().read(AES.block_size)	
icv = int.from_bytes(irv, "little")

# Generate key and encrypt
key = sha256(pwd.encode()).digest()
ctr = Counter.new(AES.block_size*8, initial_value=icv)
cip = AES.new(key, AES.MODE_CTR, counter=ctr)
msg = cip.encrypt(txt.encode())

# Print text and cipher text
print(txt)
print(msg)

# Generate key and decrypt
key2 = sha256(pwd.encode()).digest()
ctr2 = Counter.new(AES.block_size*8, initial_value=icv)
cip2 = AES.new(key2, AES.MODE_CTR, counter=ctr2)
print(cip2.decrypt(msg).decode())