Пример #1
0
        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);
            }
        }
Пример #2
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();
            }
        }