Example #1
0
        public void Decrypt(string inputFilePath, string outputFilePath)
        {
            using (var block = new RC5Block(inputFilePath, outputFilePath, BB))
            {
                var initializationVector = block.ReadBlock();
                var prevEncryptedBlock   = new byte[BB];
                Array.Copy(initializationVector, prevEncryptedBlock, (int)BB);

                byte[] encryptedBlock;
                var    decryptedBlock = new byte[BB];

                while ((encryptedBlock = block.ReadBlock()) != null)
                {
                    Decrypt(encryptedBlock, decryptedBlock);

                    for (var i = 0; i < decryptedBlock.Length; i++)
                    {
                        decryptedBlock[i] = (byte)(prevEncryptedBlock[i] ^ decryptedBlock[i]);
                    }

                    block.PutBlock(decryptedBlock);
                    Array.Copy(encryptedBlock, prevEncryptedBlock, (int)BB);
                }
            }
        }
Example #2
0
        public void Encrypt(string inputFilePath, string outputFilePath)
        {
            using (var block = new RC5Block(inputFilePath, outputFilePath, BB))
            {
                // generate initialization vector
                var encryptedBlock = new byte[BB];
                //
                //
                //
                Random.NextBytes(ref encryptedBlock);
                //
                //
                //
                block.PutBlock(encryptedBlock);

                byte[] inputBlock;
                while ((inputBlock = block.ReadBlock()) != null)
                {
                    for (var i = 0; i < inputBlock.Length; i++)
                    {
                        inputBlock[i] = (byte)(inputBlock[i] ^ encryptedBlock[i]);
                    }

                    Encrypt(inputBlock, encryptedBlock);
                    block.PutBlock(encryptedBlock);
                }
            }
        }