Exemplo n.º 1
0
        /// <summary>
        /// Encrypt file with IDEA encryption
        /// </summary>
        public void Encrypt()
        {
            GenerateKeys();
            var md5 = MD5.Create().ComputeHash(SrcFileStream);

            CreateKeyFile(md5);

            //запись MD5 хеша в зашифрованный файл
            ResFileStream.Write(md5, 0, md5.Length);

            //шифрование файла
            SrcFileStream.Seek(0, SeekOrigin.Begin);
            ResFileStream.WriteByte((byte)(8 - (SrcFileStream.Length % 8)));
            for (long i = 0; i < SrcFileStream.Length; i += 8)
            {
                EncryptionRounds();
            }
            ResFileStream.Flush();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Decrypt the file encrypted IDEA encryption
        /// </summary>
        /// <param name="SrcFileStream">Input file stream of the encrypted file</param>
        /// <param name="ResFileStream">Output file stream of the decrypted file</param>
        /// <param name="KeyFileStream">Input file stream of the key file</param>
        public void Decrypt()
        {
            GenerateKey();

            SrcFileStream.Seek(17, SeekOrigin.Begin);
            ResFileStream.Seek(0, SeekOrigin.Begin);
            for (long i = 17; i < SrcFileStream.Length; i += 8)
            {
                DecryptionRounds();
            }
            SrcFileStream.Seek(16, SeekOrigin.Begin);
            byte offset = (byte)SrcFileStream.ReadByte();

            if (!(offset == 8))
            {
                ResFileStream.SetLength(ResFileStream.Length - SrcFileStream.ReadByte());
            }
            ResFileStream.Flush();
        }