using System;
using System.Security .Cryptography ;
using System.Text ;
class EncryptorExample
{
private static string quote =
"Things may come to those who wait, but only the " +
"things left by those who hustle. -- Abraham Lincoln" ;
public static void Main( )
{
AesCryptoServiceProvider aesCSP = new AesCryptoServiceProvider( ) ;
aesCSP.GenerateKey ( ) ;
aesCSP.GenerateIV ( ) ;
byte[ ] encQuote = EncryptString( aesCSP, quote) ;
Console.WriteLine ( "Encrypted Quote:\n " ) ;
Console.WriteLine ( Convert.ToBase64String ( encQuote) ) ;
Console.WriteLine ( "\n Decrypted Quote:\n " ) ;
Console.WriteLine ( DecryptBytes( aesCSP, encQuote) ) ;
}
public static byte[ ] EncryptString( SymmetricAlgorithm symAlg, string inString)
{
byte[ ] inBlock = UnicodeEncoding.Unicode .GetBytes ( inString) ;
ICryptoTransform xfrm = symAlg.CreateEncryptor ( ) ;
byte[ ] outBlock = xfrm.TransformFinalBlock ( inBlock, 0 , inBlock.Length ) ;
return outBlock;
}
public static string DecryptBytes( SymmetricAlgorithm symAlg, byte[ ] inBytes)
{
ICryptoTransform xfrm = symAlg.CreateDecryptor ( ) ;
byte[ ] outBlock = xfrm.TransformFinalBlock ( inBytes, 0 , inBytes.Length ) ;
return UnicodeEncoding.Unicode .GetString ( outBlock) ;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uU2VjdXJpdHkuQ3J5cHRvZ3JhcGh5Owp1c2luZyBTeXN0ZW0uVGV4dDsKCmNsYXNzIEVuY3J5cHRvckV4YW1wbGUKewogICAgIHByaXZhdGUgc3RhdGljIHN0cmluZyBxdW90ZSA9CiAgICAgICAgICJUaGluZ3MgbWF5IGNvbWUgdG8gdGhvc2Ugd2hvIHdhaXQsIGJ1dCBvbmx5IHRoZSAiICsKICAgICAgICAgInRoaW5ncyBsZWZ0IGJ5IHRob3NlIHdobyBodXN0bGUuIC0tIEFicmFoYW0gTGluY29sbiI7CgogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKICAgICB7CiAgICAgICAgIEFlc0NyeXB0b1NlcnZpY2VQcm92aWRlciBhZXNDU1AgPSBuZXcgQWVzQ3J5cHRvU2VydmljZVByb3ZpZGVyKCk7CgogICAgICAgICBhZXNDU1AuR2VuZXJhdGVLZXkoKTsKICAgICAgICAgYWVzQ1NQLkdlbmVyYXRlSVYoKTsKICAgICAgICAgYnl0ZVtdIGVuY1F1b3RlID0gRW5jcnlwdFN0cmluZyhhZXNDU1AsIHF1b3RlKTsKCiAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJFbmNyeXB0ZWQgUXVvdGU6XG4iKTsKICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoQ29udmVydC5Ub0Jhc2U2NFN0cmluZyhlbmNRdW90ZSkpOwoKICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIlxuRGVjcnlwdGVkIFF1b3RlOlxuIik7CiAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKERlY3J5cHRCeXRlcyhhZXNDU1AsIGVuY1F1b3RlKSk7CiAgICAgfQoKICAgICBwdWJsaWMgc3RhdGljIGJ5dGVbXSBFbmNyeXB0U3RyaW5nKFN5bW1ldHJpY0FsZ29yaXRobSBzeW1BbGcsIHN0cmluZyBpblN0cmluZykKICAgICB7CiAgICAgICAgIGJ5dGVbXSBpbkJsb2NrID0gVW5pY29kZUVuY29kaW5nLlVuaWNvZGUuR2V0Qnl0ZXMoaW5TdHJpbmcpOwogICAgICAgICBJQ3J5cHRvVHJhbnNmb3JtIHhmcm0gPSBzeW1BbGcuQ3JlYXRlRW5jcnlwdG9yKCk7CiAgICAgICAgIGJ5dGVbXSBvdXRCbG9jayA9IHhmcm0uVHJhbnNmb3JtRmluYWxCbG9jayhpbkJsb2NrLCAwLCBpbkJsb2NrLkxlbmd0aCk7CgogICAgICAgICByZXR1cm4gb3V0QmxvY2s7CiAgICAgfQoKICAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBEZWNyeXB0Qnl0ZXMoU3ltbWV0cmljQWxnb3JpdGhtIHN5bUFsZywgYnl0ZVtdIGluQnl0ZXMpCiAgICAgewogICAgICAgICBJQ3J5cHRvVHJhbnNmb3JtIHhmcm0gPSBzeW1BbGcuQ3JlYXRlRGVjcnlwdG9yKCk7CiAgICAgICAgIGJ5dGVbXSBvdXRCbG9jayA9IHhmcm0uVHJhbnNmb3JtRmluYWxCbG9jayhpbkJ5dGVzLCAwLCBpbkJ5dGVzLkxlbmd0aCk7CgogICAgICAgICByZXR1cm4gVW5pY29kZUVuY29kaW5nLlVuaWNvZGUuR2V0U3RyaW5nKG91dEJsb2NrKTsKICAgICB9Cn0=