Crypter un Fichier à l'aide d'AES et de PyCrypto en Python 3

Je suis l'aide de PyCrypto pour crypter un fichier binaire en utilisant AES en mode CBC (Python 3.2.3 64 bits et PyCrypto 2.6). En utilisant le code suivant: http://eli.thegreenplace.net/2010/06/25/aes-encryption-of-files-in-python-with-pycrypto/

Mais en cours d'exécution dans le message d'erreur suivant: ValueError: IV doit être de 16 octets de long.

Voici le code:

def encryptFile(key, in_filename, out_filename=None, chunksize=64*1024):
""" Encrypts a file using AES (CBC mode) with the
    given key.

    key:
        The encryption key - a string that must be
        either 16, 24 or 32 bytes long. Longer keys
        are more secure.

    in_file:
        Input file

    out_file:
        If None, a StringIO will be returned.

    chunksize:
        Sets the size of the chunk which the function
        uses to read and encrypt the file. Larger chunk
        sizes can be faster for some files and machines.
        chunksize must be divisible by 16.
"""
if not out_filename:
    out_filename = in_filename + '.enc'

iv = ''.join(chr(random.randint(0, 0xFF)) for i in range(16))
encryptor = AES.new(key, AES.MODE_CBC, iv)
filesize = os.path.getsize(in_filename)

with open(in_filename, 'rb') as infile:
    with open(out_filename, 'wb') as outfile:
        outfile.write(struct.pack('<Q', filesize))
        outfile.write(iv)

        while True:
            chunk = infile.read(chunksize)
            if len(chunk) == 0:
                break
            elif len(chunk) % 16 != 0:
                chunk += ' ' * (16 - len(chunk) % 16)

            outfile.write(encryptor.encrypt(chunk))

J'ai essayé de chercher et d'expérimenter, mais ne semble pas possible de le faire fonctionner. Python est assez nouveau pour moi et si le chiffrement est. Toute aide serait grandement appréciée. Merci à l'avance.

OriginalL'auteur user1445421 | 2012-06-08