'decrypt a block (array of bytes)'

def decryptBlock(self, encryptedBlock):

    self.state = self._toBlock(encryptedBlock)
    AddRoundKey(self, self.__expandedKey[(self.Nr * self.Nb):((self.Nr + 1) * self.Nb)])
    for round in range((self.Nr - 1), 0, (-1)):
        InvShiftRows(self)
        InvSubBytes(self)
        AddRoundKey(self, self.__expandedKey[(round * self.Nb):((round + 1) * self.Nb)])
        InvMixColumns(self)
    InvShiftRows(self)
    InvSubBytes(self)
    AddRoundKey(self, self.__expandedKey[0:self.Nb])
    return self._toBString(self.state)
