public override void Decrypt(Stream input, Stream output) { base.Decrypt(input, output); var previousBlock = new byte[IV.Length]; IV.CopyTo(previousBlock, 0); var nextBlock = new byte[IV.Length]; IV.CopyTo(nextBlock, 0); while (DataNotEnded()) { ReadBlock(); Block.CopyTo(nextBlock, 0); Block = Cipher.Decrypt(Block); Block = Block.XOR(previousBlock); if (IsLastBlock()) { Block = Padding.Remove(Block); } WriteBlock(); nextBlock.CopyTo(previousBlock, 0); } }
public override void Decrypt(Stream input, Stream output) { base.Decrypt(input, output); while (DataNotEnded()) { ReadBlock(); Block = Cipher.Decrypt(Block); if (IsLastBlock()) { Block = Padding.Remove(Block); } WriteBlock(); } }