using System.Security.Cryptography;
public static string PrivateKey = "";
public static string PublicKey = "";
public static string RSAKey = "<RSAKeyValue><Modulus>riOwRJ8mfba7tbM3b0vChkKrKaGRtn4PMjNgzzkmFIBR+sUtkhz9Af2P9xGbAkEMvs2GJKtPf+WtwWMjnUT2oFpqEhsIHfIFE/KlrxkygeUB5axFu7QkRCpryei6sZZlrtFnsAkc+7TUoYapZymeLzcqSvFIpmAcMpmeTb1gp+p/mPWWtbT8zgIoLzMlOUHcAum7Gn3Ju2zjl8hN9fXQ7lTb/gwGKEqvdIo9Nnx/jxJArr5VX5Tn8dMEPdtJPFxSu9MBriu8Ma7bH6byCBOeBMaTRHMhkuOHo1rE3L/BAnnnZIXnY8ugLL/ReI6gpZIZxD4KrAK6PewVMsw33c4yHw==</Modulus><Exponent>AQAB</Exponent><P>4F/9WZr9KT/cAmrdBXW9hZvJ9vT1cwvujcLlNiSoze2UiNheNbQe/uAZKDoZsQOf77UKKQQdRQDJn3mxZR9YF8bRZ8xbo6TUGL2/pJrrnMmKVmh0zCgJIcB3DuOK8MML9hHgPMKxb9kiSuiaRTXp5KzHhWyx6O69SmiX0gXNScM=</P><Q>xq8TDbJhhtMBvkGg6x9MrriXtQYxZscPQSOP87xXeOd/Z5VnjRu6B+5O7PrJoXiBJ9do43DBGeME2xnoOWphAdqrpkWJdj5sOy8+Zt/egKRAMXdtQuMQJweta9PSOpAzWUGzHefFEr/UsUMvSH2p6lMztYuOPNZA4kzPkE4i1HU=</Q><DP>ha7LXQLqCRSiOdJ/w0wGUj+i0n/aaeRXCqFvPZYT+TWvROVdJDQgL41Hj98mBYB6XzCHUC7CXaV9e4Xe+rf1HZ14kJaClvqS3/bV4vXmoXC2+oqb5DOKVVC93uIVmyMq0j6OUsVRQKmnM+hoWgooQ/XpnoZHbdgocdfldN2+FU8=</DP><DQ>i9oibEq60X9nw7dIgRhYDsiKqPbCAVlvCGfy5RsW61jwWkZVTINO0FRTpAXntcwwBY5gG3B7zC/7dAppZzjVLcvxdSmPV/cakhJwN1OvuBdlxCwPcbyI2yBRVwwT9/sW2eYgIZXKJ6d2HIxxFPK3juSgClNAfNxHccOleys04x0=</DQ><InverseQ>mzLdDm3qvdJLutQcYjxCfN5h5U3D6gZgHZ1pIveWjmp9oEhcDToC09eXMJ86NGkxtbXZf7l1YclOvrB+DYr4AvBknMlpbzQKrhb9Ve55X30aT7aYBNBlhRXdTtuMqG1jQZVOK32mDvRF+gKO1tpMpO4xymrAsBNK5uTsR4SV15Q=</InverseQ><D>E110pKzuItzHUxVy/LV4FGYlkqOdCKZMGlEMWv8H9Q+wDisPPkhq+mWwNNGIY1/Igw9n83v5g0ePYwobU8nvgzWKxiirZmkbl3RMaIRs0XUeGORnfNAzmED/a5yt5kHLXP18gl8BEhyx6KSJAifmp2mDEoJyic32VMowiISe0w1ZxzvtYbT3I3iQ6kAscnad9xK6W8nXNAnmSzHruUj06ooFqC2oH5XEI3V47XSTRp/66w1kNnXGGAD5Li3PRb5RA1S7mo1gT0iLUF7oBJ4/5opw2eYoIWGkS8xlwnKMIshpULkoXRPSDjUvQzJHQRH+ToT/hAYHbMtIJ2mnNYW0wQ==</D></RSAKeyValue>";
public static void Main()
var rsa = new RSACryptoServiceProvider(2048);
var xml = rsa.ToXmlString(true);
Console.WriteLine(HttpUtility.HtmlEncode(xml));
public static string[] DecryptValues()
var values = "BpUi9/EbTbMJT9NwQQ9qWH4+y+5QsUklfQ71h2XmwO+gpOAKQJCwb1FWGxI94jhDjgTi/JawnpWatwhAT5jLV6clIl0M8p6YrdBqAWQBgI7Oj4obwvh3NS3poQyFtUAnCnBFhqlTe7NP5pxtjhFq3HznUJf652EmvcnLdpOnC50a/v80WaEWvdAENWzLnfHEESjrk2+d8pdNTqJSNO69xjEXMCEIMT3BcRpHO61QsI/9Za3tbVKdaHOEU9Og1nbdhXB0TClhj1XtS3DRAWL2TaE/zafpbII90OgI0s+RptLGJfIn+MsFm6FoBVRlpuoajin9KLpBS90+F+UDtD0bqg==";
return Decrypt(values, RSAKey);
public static string EncryptValues()
var values = @"itaguaidev;uk6Nn95ia2obkqQcMMcY/8EaPhVg05djqZpYFNvWyfjzWbRWtTR9GLOHT98bHZ8HO0KExtbJD/4F+AStRrj6/Q==";
return Encrypt64StringRSA(values, RSAKey);
public static string[] Decrypt(string value, string rsaKey)
return Decrypt64StringRSA(value, rsaKey).Split(";");
public static string Decrypt64StringRSA(string textToDecripty, string key)
key = HttpUtility.HtmlDecode(key);
var rsa = new RSACryptoServiceProvider();
FromXmlStringCustom(rsa, key);
byte[] textEncript = Convert.FromBase64String(textToDecripty);
byte[] texto = rsa.Decrypt(textEncript, true);
return Encoding.UTF8.GetString(texto);
public static void FromXmlStringCustom(RSA rsa, string xmlString)
RSAParameters parameters = new RSAParameters();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlString);
if (xmlDoc.DocumentElement.Name.Equals("RSAKeyValue"))
foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes)
case "Modulus": parameters.Modulus = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
case "Exponent": parameters.Exponent = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
case "P": parameters.P = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
case "Q": parameters.Q = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
case "DP": parameters.DP = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
case "DQ": parameters.DQ = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
case "InverseQ": parameters.InverseQ = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
case "D": parameters.D = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
throw new ApplicationException("Invalid XML RSA key.");
rsa.ImportParameters(parameters);
public static string Encrypt64StringRSA(string textToEncrypt, string key)
key = HttpUtility.HtmlDecode(key);
var rsa = new RSACryptoServiceProvider();
FromXmlStringCustom(rsa, key);
byte[] data = Encoding.UTF8.GetBytes(textToEncrypt);
byte[] enc = rsa.Encrypt(data, true);
return Convert.ToBase64String(enc).ToString();