/gdata/tlslite/utils/AES.py
http://radioappz.googlecode.com/ · Python · 31 lines · 23 code · 3 blank · 5 comment · 7 complexity · 09bf37bb2a48d0b0de4f8f539a750dbd MD5 · raw file
- """Abstract class for AES."""
- class AES:
- def __init__(self, key, mode, IV, implementation):
- if len(key) not in (16, 24, 32):
- raise AssertionError()
- if mode != 2:
- raise AssertionError()
- if len(IV) != 16:
- raise AssertionError()
- self.isBlockCipher = True
- self.block_size = 16
- self.implementation = implementation
- if len(key)==16:
- self.name = "aes128"
- elif len(key)==24:
- self.name = "aes192"
- elif len(key)==32:
- self.name = "aes256"
- else:
- raise AssertionError()
- #CBC-Mode encryption, returns ciphertext
- #WARNING: *MAY* modify the input as well
- def encrypt(self, plaintext):
- assert(len(plaintext) % 16 == 0)
- #CBC-Mode decryption, returns plaintext
- #WARNING: *MAY* modify the input as well
- def decrypt(self, ciphertext):
- assert(len(ciphertext) % 16 == 0)