Problema no PyCrypto usando AES + CTR

Estou escrevendo um pedaço de código para criptografar um texto usando criptografia simétrica. Mas não está voltando com o resultado certo ...

from Crypto.Cipher import AES
import os

crypto = AES.new(os.urandom(32), AES.MODE_CTR, counter = lambda : os.urandom(16))
encrypted = crypto.encrypt("aaaaaaaaaaaaaaaa")
print crypto.decrypt(encrypted)

Aqui, o texto descriptografado é diferente do original.

Eu realmente não entendo muito sobre criptografia, então por favor, tenha paciência comigo. Entendo que o modo CTR exige uma função "contador" para fornecer um contador aleatório a cada vez, mas por que ele precisa ter 16 bytes quando minha chave é 32 bytes e insiste que minha mensagem também esteja em múltiplos de 16 bytes? Isso é normal?

Suponho que ele não volte à mensagem original porque o contador mudou entre criptografar e descriptografar. Mas então, como é que deveria funcionar teoricamente? O que estou fazendo errado? De qualquer forma, sou forçado a recorrer ao BCE até descobrir isso :(

questionAnswers(5)

yourAnswerToTheQuestion