using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace BSK04042019 { class Program { static void Main(string[] args) { string original = ""; int caseSwitch = 0; int a = 9; do { Console.WriteLine("Szyfrowanie z pliku wybierz 1\nSzyfrowanie wpisanego tekstu wybierz 2\n"); int.TryParse(Console.ReadLine(), out caseSwitch); switch (caseSwitch) { case 1: { original = File.ReadAllText(@"E:\Fabian\Test.txt"); Console.WriteLine("Contents of Test.txt = {0}", original); // Create a new instance of the Aes // class. This generates a new key and initialization // vector (IV). using (Aes myAes = Aes.Create()) { // Encrypt the string to an array of bytes. byte[] encrypted = EncryptStringToBytes_Aes(original, myAes.Key, myAes.IV); // Decrypt the bytes to a string. string roundtrip = DecryptStringFromBytes_Aes(encrypted, myAes.Key, myAes.IV); var str = Encoding.Default.GetString(encrypted); //Display the original data and the decrypted data. Console.WriteLine("Original: {0}", original); Console.WriteLine("Encrypted: {0}", str); Console.WriteLine("Round Trip: {0}", roundtrip); } break; } case 2: { Console.WriteLine("Podaj text do zaszyfrowania: "); original = Console.ReadLine(); using (Aes myAes = Aes.Create()) { byte[] encrypted = EncryptStringToBytes_Aes(original, myAes.Key, myAes.IV); string roundtrip = DecryptStringFromBytes_Aes(encrypted, myAes.Key, myAes.IV); var str = Encoding.Default.GetString(encrypted); Console.WriteLine("Original: {0}", original); Console.WriteLine("Encrypted: {0}", str); Console.WriteLine("Round Trip: {0}", roundtrip); } break; } default: { break; } } Console.WriteLine("Aby kontynuować wybierz '9'"); a = Convert.ToInt32(Console.ReadLine()); } while (a == 9); Console.ReadKey(); } static byte[] EncryptStringToBytes_Aes(string plainText, byte[] Key, byte[] IV) { // Check arguments. if (plainText == null || plainText.Length <= 0) throw new ArgumentNullException("plainText"); if (Key == null || Key.Length <= 0) throw new ArgumentNullException("Key"); if (IV == null || IV.Length <= 0) throw new ArgumentNullException("IV"); byte[] encrypted; // Create an Aes object // with the specified key and IV. using (Aes aesAlg = Aes.Create()) { aesAlg.Key = Key; aesAlg.IV = IV; // Create an encryptor to perform the stream transform. ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV); // Create the streams used for encryption. using (MemoryStream msEncrypt = new MemoryStream()) { using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { using (StreamWriter swEncrypt = new StreamWriter(csEncrypt)) { //Write all data to the stream. swEncrypt.Write(plainText); } encrypted = msEncrypt.ToArray(); } } } // Return the encrypted bytes from the memory stream. return encrypted; } static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] Key, byte[] IV) { // Check arguments. if (cipherText == null || cipherText.Length <= 0) throw new ArgumentNullException("cipherText"); if (Key == null || Key.Length <= 0) throw new ArgumentNullException("Key"); if (IV == null || IV.Length <= 0) throw new ArgumentNullException("IV"); // Declare the string used to hold // the decrypted text. string plaintext = null; // Create an Aes object // with the specified key and IV. using (Aes aesAlg = Aes.Create()) { aesAlg.Key = Key; aesAlg.IV = IV; // Create a decryptor to perform the stream transform. ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); // Create the streams used for decryption. using (MemoryStream msDecrypt = new MemoryStream(cipherText)) { using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) { using (StreamReader srDecrypt = new StreamReader(csDecrypt)) { // Read the decrypted bytes from the decrypting stream // and place them in a string. plaintext = srDecrypt.ReadToEnd(); } } } } return plaintext; } } }