using System;
using System.Security.Cryptography;
using System.Text;
namespace AESExample
{
class Program
{
static void Main(string[] args)
{
Aes aes = Aes.Create();
aes.KeySize = 256;
aes.Mode = CipherMode.CBC;
aes.GenerateKey();
aes.GenerateIV();
string plaintext = "Hello, world!";
byte[] ciphertext;
using (ICryptoTransform encryptor = aes.CreateEncryptor())
{
byte[] plaintextBytes = Encoding.UTF8.GetBytes(plaintext);
ciphertext = encryptor.TransformFinalBlock(plaintextBytes, 0, plaintextBytes.Length);
}
string decryptedText;
using (ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV))
{
byte[] decryptedBytes = decryptor.TransformFinalBlock(ciphertext, 0, ciphertext.Length);
decryptedText = Encoding.UTF8.GetString(decryptedBytes);
}
Console.WriteLine($"Plaintext: {plaintext}");
Console.WriteLine($"Ciphertext: {Convert.ToBase64String(ciphertext)}");
Console.WriteLine($"Decrypted text: {decryptedText}");
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uU2VjdXJpdHkuQ3J5cHRvZ3JhcGh5Owp1c2luZyBTeXN0ZW0uVGV4dDsKbmFtZXNwYWNlIEFFU0V4YW1wbGUKewogICAgY2xhc3MgUHJvZ3JhbQogICAgewogICAgICAgIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgICAgICB7CiAgICAgICAgICAgIEFlcyBhZXMgPSBBZXMuQ3JlYXRlKCk7CiAgICAgICAgICAgIGFlcy5LZXlTaXplID0gMjU2OwogICAgICAgICAgICBhZXMuTW9kZSA9IENpcGhlck1vZGUuQ0JDOwogICAgICAgICAgICBhZXMuR2VuZXJhdGVLZXkoKTsKICAgICAgICAgICAgYWVzLkdlbmVyYXRlSVYoKTsKICAgICAgICAgICAgc3RyaW5nIHBsYWludGV4dCA9ICJIZWxsbywgd29ybGQhIjsKICAgICAgICAgICAgYnl0ZVtdIGNpcGhlcnRleHQ7CiAgICAgICAgICAgIHVzaW5nIChJQ3J5cHRvVHJhbnNmb3JtIGVuY3J5cHRvciA9IGFlcy5DcmVhdGVFbmNyeXB0b3IoKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYnl0ZVtdIHBsYWludGV4dEJ5dGVzID0gRW5jb2RpbmcuVVRGOC5HZXRCeXRlcyhwbGFpbnRleHQpOwogICAgICAgICAgICAgICAgY2lwaGVydGV4dCA9IGVuY3J5cHRvci5UcmFuc2Zvcm1GaW5hbEJsb2NrKHBsYWludGV4dEJ5dGVzLCAwLCBwbGFpbnRleHRCeXRlcy5MZW5ndGgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN0cmluZyBkZWNyeXB0ZWRUZXh0OwogICAgICAgICAgICB1c2luZyAoSUNyeXB0b1RyYW5zZm9ybSBkZWNyeXB0b3IgPSBhZXMuQ3JlYXRlRGVjcnlwdG9yKGFlcy5LZXksIGFlcy5JVikpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGJ5dGVbXSBkZWNyeXB0ZWRCeXRlcyA9IGRlY3J5cHRvci5UcmFuc2Zvcm1GaW5hbEJsb2NrKGNpcGhlcnRleHQsIDAsIGNpcGhlcnRleHQuTGVuZ3RoKTsKICAgICAgICAgICAgICAgIGRlY3J5cHRlZFRleHQgPSBFbmNvZGluZy5VVEY4LkdldFN0cmluZyhkZWNyeXB0ZWRCeXRlcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoJCJQbGFpbnRleHQ6IHtwbGFpbnRleHR9Iik7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCQiQ2lwaGVydGV4dDoge0NvbnZlcnQuVG9CYXNlNjRTdHJpbmcoY2lwaGVydGV4dCl9Iik7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCQiRGVjcnlwdGVkIHRleHQ6IHtkZWNyeXB0ZWRUZXh0fSIpOwogICAgICAgIH0KICAgIH0KfQ==