class RijndaelOutputStream(BlockOutputStream): def __init__(self, outputStream, key, iv=None): super(RijndaelOutputStream, self).__init__(outputStream, 16) if key is None: raise ValueError, 'key is None' self._key = Key(Key.ENCRYPT, key) self._iv = iv or urandom(16) self._cipher = Cipher(Cipher.CBC, self._iv) def writeBlocks(self, data): data = self._cipher.blockEncrypt(self._key, data) super(RijndaelOutputStream, self).writeBlocks(data) def writePadded(self, data): data = self._cipher.padEncrypt(self._key, data) super(RijndaelOutputStream, self).writePadded(data) def close(self): super(RijndaelOutputStream, self).close() self._key = None self._cipher = None def getIV(self): return self._iv
class RijndaelInputStream(BlockInputStream): def __init__(self, inputStream, key, iv): super(RijndaelInputStream, self).__init__(inputStream, 16) if key is None: raise ValueError, 'key is None' if iv is None: raise ValueError, 'iv is None' self._key = Key(Key.DECRYPT, key) self._cipher = Cipher(Cipher.CBC, iv) def readBlocks(self, len): data = super(RijndaelInputStream, self).readBlocks(len) return self._cipher.blockDecrypt(self._key, data) def readPadded(self, len): data = super(RijndaelInputStream, self).readPadded(len) return self._cipher.padDecrypt(self._key, data) def close(self): super(RijndaelInputStream, self).close() self._key = None self._cipher = None
def __init__(self, outputStream, key, iv=None): super(RijndaelOutputStream, self).__init__(outputStream, 16) if key is None: raise ValueError, 'key is None' self._key = Key(Key.ENCRYPT, key) self._iv = iv or urandom(16) self._cipher = Cipher(Cipher.CBC, self._iv)
def __init__(self, inputStream, key, iv): super(RijndaelInputStream, self).__init__(inputStream, 16) if key is None: raise ValueError, 'key is None' if iv is None: raise ValueError, 'iv is None' self._key = Key(Key.DECRYPT, key) self._cipher = Cipher(Cipher.CBC, iv)