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;
}
}
}