class RijndaelInputStream(BlockInputStream): def __init__(self, inputStream, key): super(RijndaelInputStream, self).__init__(inputStream, 16) self.r = Rijndael() if key is None: raise ValueError, 'key is None' if len(key) == 16: keyLen = Rijndael.Key16Bytes elif len(key) == 24: keyLen = Rijndael.Key24Bytes elif len(key) == 32: keyLen = Rijndael.Key32Bytes else: raise ValueError, 'key is not 16, 24 or 32 bytes long' self.r.init(Rijndael.ECB, Rijndael.Decrypt, key, keyLen) def readBlocks(self, len): data = super(RijndaelInputStream, self).readBlocks(len) return self.r.blockDecrypt(data) def readPadded(self, len): data = super(RijndaelInputStream, self).readPadded(len) return self.r.padDecrypt(data) def close(self): super(RijndaelInputStream, self).close() self.r = None
class RijndaelOutputStream(BlockOutputStream): def __init__(self, outputStream, key): super(RijndaelOutputStream, self).__init__(outputStream, 16) self.r = Rijndael() if key is None: raise ValueError, 'key is None' if len(key) == 16: keyLen = Rijndael.Key16Bytes elif len(key) == 24: keyLen = Rijndael.Key24Bytes elif len(key) == 32: keyLen = Rijndael.Key32Bytes else: raise ValueError, 'key is not 16, 24 or 32 bytes long' self.r.init(Rijndael.ECB, Rijndael.Encrypt, key, keyLen) def writeBlocks(self, data): super(RijndaelOutputStream, self).writeBlocks(self.r.blockEncrypt(data)) def writePadded(self, data): super(RijndaelOutputStream, self).writePadded(self.r.padEncrypt(data)) def close(self): super(RijndaelOutputStream, self).close() del self.r
def __init__(self, inputStream, key): super(RijndaelInputStream, self).__init__(inputStream, 16) self.r = Rijndael() if key is None: raise ValueError, 'key is None' if len(key) == 16: keyLen = Rijndael.Key16Bytes elif len(key) == 24: keyLen = Rijndael.Key24Bytes elif len(key) == 32: keyLen = Rijndael.Key32Bytes else: raise ValueError, 'key is not 16, 24 or 32 bytes long' self.r.init(Rijndael.ECB, Rijndael.Decrypt, key, keyLen)