コード例 #1
0
        public static void EncryptFolder(Encrypters encrypter)
        {
            byte[] key = null;
            byte[] iv  = null;

            switch (encrypter)
            {
            case Encrypters.DES:
                key = GenerateNumbers(8);
                iv  = GenerateNumbers(8);
                break;

            case Encrypters.TRIPLEDES:
                key = GenerateNumbers(16);
                iv  = GenerateNumbers(8);
                break;

            case Encrypters.AES:
                key = GenerateNumbers(32);
                iv  = GenerateNumbers(16);
                break;
            }

            EncryptFolder(encrypter, key, iv);
        }
コード例 #2
0
        /// <summary>
        /// Method for decrypting data
        /// </summary>
        /// <param name="encrypter">What encryption is used</param>
        /// <param name="message">The message to decrypt</param>
        /// <param name="key">The encryption key</param>
        /// <param name="iv">the encryption iv</param>
        /// <returns>Returns a decrypted byte[]</returns>
        public static void DecryptFolder(Encrypters encrypter, byte[] key, byte[] iv)
        {
            watch = new Stopwatch();
            watch.Start();
            SymmetricAlgorithm algorithm = null;

            switch (encrypter)
            {
            case Encrypters.DES:
                algorithm = DESCryptoServiceProvider.Create();
                break;

            case Encrypters.TRIPLEDES:
                algorithm = TripleDESCryptoServiceProvider.Create();
                break;

            case Encrypters.AES:
                algorithm = AesCryptoServiceProvider.Create();
                break;
            }

            algorithm.Mode    = CipherMode.CBC;
            algorithm.Padding = PaddingMode.PKCS7;
            try
            {
                algorithm.Key = key;
                algorithm.IV  = iv;
            }
            catch (FormatException e)
            {
                Console.WriteLine("Make sure to use the correct encryption method");
                throw e;
            }

            using (var memoryStream = new MemoryStream())
            {
                var cryptoStream = new CryptoStream(memoryStream, algorithm.CreateDecryptor(),
                                                    CryptoStreamMode.Write);

                foreach (string file in Directory.GetFiles(Environment.CurrentDirectory, "*.txt"))
                {
                    byte[] fileText = File.ReadAllBytes(file);
                    cryptoStream.Write(fileText, 0, fileText.Length);
                    cryptoStream.FlushFinalBlock();
                    File.WriteAllBytes(file, memoryStream.ToArray());
                }

                watch.Stop();
                Console.WriteLine("Stopwatch took " + watch.ElapsedMilliseconds + "ms to decrypt");
            }
        }
コード例 #3
0
        /// <summary>
        /// Method for encrypting txt files in current directory
        /// </summary>
        /// <param name="encrypter">Method for encryption</param>
        /// <param name="key">The key used to encrypt with</param>
        /// <param name="iv">The iv used to encrypt with</param>
        public static void EncryptFolder(Encrypters encrypter, byte[] key, byte[] iv)
        {
            watch = new Stopwatch();
            watch.Start();
            SymmetricAlgorithm algorithm = null;

            switch (encrypter)
            {
            case Encrypters.DES:
                algorithm = DESCryptoServiceProvider.Create();
                break;

            case Encrypters.TRIPLEDES:
                algorithm = TripleDESCryptoServiceProvider.Create();
                break;

            case Encrypters.AES:
                algorithm = AesCryptoServiceProvider.Create();
                break;
            }

            algorithm.Mode    = CipherMode.CBC;
            algorithm.Padding = PaddingMode.PKCS7;

            algorithm.Key = key;
            algorithm.IV  = iv;

            using (var memoryStream = new MemoryStream())
            {
                var cryptoStream = new CryptoStream(memoryStream, algorithm.CreateEncryptor(),
                                                    CryptoStreamMode.Write);

                foreach (string file in Directory.GetFiles(Environment.CurrentDirectory, "*.txt"))
                {
                    byte[] fileText = File.ReadAllBytes(file);

                    cryptoStream.Write(fileText, 0, fileText.Length);
                    cryptoStream.FlushFinalBlock();
                    File.WriteAllBytes(file, memoryStream.ToArray());
                }

                watch.Stop();
                Console.WriteLine("Stopwatch took: " + watch.ElapsedMilliseconds + "ms to complete \n" +
                                  "Remember to save the key and IV somewhere");
                Console.WriteLine("Key:" + Convert.ToBase64String(algorithm.Key) + "\n" +
                                  "IV: " + Convert.ToBase64String(algorithm.IV));
            }
        }