using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public class Test
{
public static void Main()
{
var tempData = "This is the text to encrypt. It's not much, but it's all there is.";
using (var rijCrypto = new RijndaelManaged())
{
byte[] encryptedData;
rijCrypto.Padding = System.Security.Cryptography.PaddingMode.ISO10126;
rijCrypto.KeySize = 256;
using (var input = new MemoryStream(Encoding.Unicode.GetBytes(tempData)))
using (var output = new MemoryStream())
{
var encryptor = rijCrypto.CreateEncryptor();
using (var cryptStream = new CryptoStream(output, encryptor, CryptoStreamMode.Write))
{
var buffer = new byte[1024];
var read = input.Read(buffer, 0, buffer.Length);
while (read > 0)
{
cryptStream.Write(buffer, 0, read);
read = input.Read(buffer, 0, buffer.Length);
}
cryptStream.FlushFinalBlock();
encryptedData = output.ToArray();
}
}
using (var input = new MemoryStream(encryptedData))
using (var output = new MemoryStream())
{
var decryptor = rijCrypto.CreateDecryptor();
using (var cryptStream = new CryptoStream(input, decryptor, CryptoStreamMode.Read))
{
var buffer = new byte[1024];
var read = cryptStream.Read(buffer, 0, buffer.Length);
while (read > 0)
{
output.Write(buffer, 0, read);
read = cryptStream.Read(buffer, 0, buffer.Length);
}
cryptStream.Flush();
var result = Encoding.Unicode.GetString(output.ToArray());
Console.WriteLine(result);
}
}
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uSU87CnVzaW5nIFN5c3RlbS5TZWN1cml0eS5DcnlwdG9ncmFwaHk7CnVzaW5nIFN5c3RlbS5UZXh0OwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciB0ZW1wRGF0YSA9ICJUaGlzIGlzIHRoZSB0ZXh0IHRvIGVuY3J5cHQuIEl0J3Mgbm90IG11Y2gsIGJ1dCBpdCdzIGFsbCB0aGVyZSBpcy4iOwoKdXNpbmcgKHZhciByaWpDcnlwdG8gPSBuZXcgUmlqbmRhZWxNYW5hZ2VkKCkpCnsKICAgIGJ5dGVbXSBlbmNyeXB0ZWREYXRhOwogICAgcmlqQ3J5cHRvLlBhZGRpbmcgPSBTeXN0ZW0uU2VjdXJpdHkuQ3J5cHRvZ3JhcGh5LlBhZGRpbmdNb2RlLklTTzEwMTI2OwogICAgcmlqQ3J5cHRvLktleVNpemUgPSAyNTY7CgogICAgdXNpbmcgKHZhciBpbnB1dCA9IG5ldyBNZW1vcnlTdHJlYW0oRW5jb2RpbmcuVW5pY29kZS5HZXRCeXRlcyh0ZW1wRGF0YSkpKQogICAgdXNpbmcgKHZhciBvdXRwdXQgPSBuZXcgTWVtb3J5U3RyZWFtKCkpCiAgICB7CiAgICAgICAgdmFyIGVuY3J5cHRvciA9IHJpakNyeXB0by5DcmVhdGVFbmNyeXB0b3IoKTsKCiAgICAgICAgdXNpbmcgKHZhciBjcnlwdFN0cmVhbSA9IG5ldyBDcnlwdG9TdHJlYW0ob3V0cHV0LCBlbmNyeXB0b3IsIENyeXB0b1N0cmVhbU1vZGUuV3JpdGUpKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIGJ1ZmZlciA9IG5ldyBieXRlWzEwMjRdOwogICAgICAgICAgICB2YXIgcmVhZCA9IGlucHV0LlJlYWQoYnVmZmVyLCAwLCBidWZmZXIuTGVuZ3RoKTsKICAgICAgICAgICAgd2hpbGUgKHJlYWQgPiAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjcnlwdFN0cmVhbS5Xcml0ZShidWZmZXIsIDAsIHJlYWQpOwogICAgICAgICAgICAgICAgcmVhZCA9IGlucHV0LlJlYWQoYnVmZmVyLCAwLCBidWZmZXIuTGVuZ3RoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjcnlwdFN0cmVhbS5GbHVzaEZpbmFsQmxvY2soKTsKICAgICAgICAgICAgZW5jcnlwdGVkRGF0YSA9IG91dHB1dC5Ub0FycmF5KCk7CiAgICAgICAgfQogICAgfQoKICAgIHVzaW5nICh2YXIgaW5wdXQgPSBuZXcgTWVtb3J5U3RyZWFtKGVuY3J5cHRlZERhdGEpKQogICAgdXNpbmcgKHZhciBvdXRwdXQgPSBuZXcgTWVtb3J5U3RyZWFtKCkpCiAgICB7CiAgICAgICAgdmFyIGRlY3J5cHRvciA9IHJpakNyeXB0by5DcmVhdGVEZWNyeXB0b3IoKTsKICAgICAgICB1c2luZyAodmFyIGNyeXB0U3RyZWFtID0gbmV3IENyeXB0b1N0cmVhbShpbnB1dCwgZGVjcnlwdG9yLCBDcnlwdG9TdHJlYW1Nb2RlLlJlYWQpKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIGJ1ZmZlciA9IG5ldyBieXRlWzEwMjRdOwogICAgICAgICAgICB2YXIgcmVhZCA9IGNyeXB0U3RyZWFtLlJlYWQoYnVmZmVyLCAwLCBidWZmZXIuTGVuZ3RoKTsKICAgICAgICAgICAgd2hpbGUgKHJlYWQgPiAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgb3V0cHV0LldyaXRlKGJ1ZmZlciwgMCwgcmVhZCk7CiAgICAgICAgICAgICAgICAgcmVhZCA9IGNyeXB0U3RyZWFtLlJlYWQoYnVmZmVyLCAwLCBidWZmZXIuTGVuZ3RoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjcnlwdFN0cmVhbS5GbHVzaCgpOwogICAgICAgICAgICB2YXIgcmVzdWx0ID0gRW5jb2RpbmcuVW5pY29kZS5HZXRTdHJpbmcob3V0cHV0LlRvQXJyYXkoKSk7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHJlc3VsdCk7CiAgICAgICAgfQogICAgfQp9Cgl9Cn0=