Пример #1
0
        public void HelixFileDecryptor_DecryptHeaderOnlyLargeFile()
        {
            byte[] b = new byte[50000];
            System.Security.Cryptography.RandomNumberGenerator.Create().GetBytes(b);

            byte[] enc;
            using (MemoryStream originalContent = new MemoryStream(b, 0, b.Length))
                using (MemoryStream encryptedStream = new MemoryStream())
                    using (var encryptor = new HelixFileEncryptor(encryptedStream, DerivedBytesProvider.FromPassword("password"), HelixFileVersion.UnitTest))
                    {
                        encryptor.WriteHeader(new FileEntry());
                        encryptor.WriteContent(originalContent);

                        encryptor.FlushFinalBlock();

                        enc = encryptedStream.ToArray();
                        Assert.IsTrue(enc.Length > 50000);
                    }

            using (MemoryStream encryptedStream = new MemoryStream(enc, true))
                using (var decryptor = new HelixFileDecryptor(encryptedStream))
                {
                    decryptor.Initialize(DerivedBytesProvider.FromPassword("password"));
                    var header = decryptor.ReadHeader();
                    Assert.IsNotNull(header);
                    decryptor.Dispose();
                }
        }