'Encrypt a block of plain text using the AES block cipher.'

def encrypt(self, plaintext):

    if (len(plaintext) != 16):
        raise ValueError('wrong    block    length')
    rounds = (len(self._Ke) - 1)
    (s1, s2, s3) = [1, 2, 3]
    a = [0, 0, 0, 0]
    t = [(_compact_word(plaintext[(4 * i):((4 * i) + 4)]) ^ self._Ke[0][i]) for i in xrange(0, 4)]
    for r in xrange(1, rounds):
        for i in xrange(0, 4):
            a[i] = ((((self.T1[((t[i] >> 24) & 255)] ^ self.T2[((t[((i + s1) % 4)] >> 16) & 255)]) ^ self.T3[((t[((i + s2) % 4)] >> 8) & 255)]) ^ self.T4[(t[((i + s3) % 4)] & 255)]) ^ self._Ke[r][i])
        t = copy.copy(a)
    result = []
    for i in xrange(0, 4):
        tt = self._Ke[rounds][i]
        result.append(((self.S[((t[i] >> 24) & 255)] ^ (tt >> 24)) & 255))
        result.append(((self.S[((t[((i + s1) % 4)] >> 16) & 255)] ^ (tt >> 16)) & 255))
        result.append(((self.S[((t[((i + s2) % 4)] >> 8) & 255)] ^ (tt >> 8)) & 255))
        result.append(((self.S[(t[((i + s3) % 4)] & 255)] ^ tt) & 255))
    return result
