예제 #1
0
        private async Task AssertFileEncryption(int fileLength, bool async)
        {
            byte[] iv  = CryptoRandom.NextBytesStatic(16);
            byte[] key = CryptoRandom.NextBytesStatic(32);

            string plainTextFile = WriteToTempFile(fileLength);
            string encryptedFile = Path.GetRandomFileName();
            string decryptedFile = Path.GetRandomFileName();

            if (async)
            {
                await AesFileEncrytion.EncryptAsync(plainTextFile, encryptedFile, key, iv, true);

                await AesFileEncrytion.DecryptAsync(encryptedFile, decryptedFile, key, iv, true);
            }
            else
            {
                AesFileEncrytion.Encrypt(plainTextFile, encryptedFile, key, iv, true);
                AesFileEncrytion.Decrypt(encryptedFile, decryptedFile, key, iv, true);
            }

            try
            {
                AssertFileContent(plainTextFile, decryptedFile);
            }
            finally
            {
                File.Delete(plainTextFile);
                File.Delete(encryptedFile);
                File.Delete(decryptedFile);
            }
        }
예제 #2
0
        //[Fact]
        //public async Task GigabyteEncryptedFileWithPasswordCanBeDecrypted()
        //{
        //    string file = $"D:\\testtime - {Guid.NewGuid()}.txt";
        //    File.Create(file);
        //    Stopwatch sw = new Stopwatch();
        //    sw.Start();
        //    await AssertFileEncryptionWithPassword(370 * 1024 * 1024, true);
        //    sw.Stop();
        //    File.AppendAllText(file, $"elapsed {sw.Elapsed.TotalMinutes}:{sw.Elapsed.Seconds}");
        //    sw.Restart();
        //    await AssertFileEncryptionWithPassword(370 * 1024 * 1024, false);
        //    Console.WriteLine($"not async gigabyte write {sw.Elapsed}");
        //    sw.Stop();
        //}

        private async Task AssertFileEncryptionWithPassword(int fileLength, bool async)
        {
            string pass = PasswordGenerator.GenerateStatic();

            string plainTextFile = WriteToTempFile(fileLength);
            string encryptedFile = Path.GetRandomFileName();
            string decryptedFile = Path.GetRandomFileName();

            if (async)
            {
                await AesFileEncrytion.EncryptWithPasswordAsync(plainTextFile, encryptedFile, pass, true);

                await AesFileEncrytion.DecryptWithPasswordAsync(encryptedFile, decryptedFile, pass, true);
            }
            else
            {
                AesFileEncrytion.EncryptWithPassword(plainTextFile, encryptedFile, pass, true);
                AesFileEncrytion.DecryptWithPassword(encryptedFile, decryptedFile, pass, true);
            }

            try
            {
                AssertFileContent(plainTextFile, decryptedFile);
            }
            finally
            {
                File.Delete(plainTextFile);
                File.Delete(encryptedFile);
                File.Delete(decryptedFile);
            }
        }