using System.Security.Cryptography;
using Newtonsoft.Json.Serialization;
using IdentityServer4.Configuration;
using IdentityServer4.EntityFramework.Interfaces;
using IdentityServer4.EntityFramework.Options;
private static SymmetricAlgorithm symmetricProvider;
static byte[] key = new byte[] { 11, 94, 202, 155, 57, 92, 42, 11, 180, 213, 95, 221, 169, 119, 104, 82, 139, 121, 249, 131, 108, 29, 254, 199, 187, 30, 62, 200, 138, 35, 234, 95 };
static byte[] IV = new byte[] { 181, 152, 231, 12, 90, 4, 175, 90, 234, 57, 207, 76, 48, 116, 243, 12 };
static string devKey = "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";
static string prodkey = "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";
public static void Main(string[] args)
string originalString = prodkey;
Console.WriteLine("Original Text: {0}", originalString);
string decryptedText = Decrypt(originalString);
JsonConvert.DeserializeObject<TemporaryRsaKey>(decryptedText, new JsonSerializerSettings
ContractResolver = new RsaKeyContractResolver()
var secKey = CryptoHelper.CreateRsaSecurityKey(rsaKey.Parameters, rsaKey.KeyId);
Console.WriteLine("rsaKey: {0}", rsaKey.KeyId);
Console.WriteLine("secKey: {0}", secKey);
Console.WriteLine("Decrypted Text: {0}", decryptedText);
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("From: {0}.\nDetail: {1}", ex.Source, ex.Message);
public static string Encrypt(string source)
byte[] bytIn = Encoding.ASCII.GetBytes(source);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
symmetricProvider = new AesCryptoServiceProvider();
symmetricProvider.Key = key;
symmetricProvider.IV = IV;
ICryptoTransform encrypto = symmetricProvider.CreateEncryptor();
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
cs.Write(bytIn, 0, bytIn.Length);
byte[] bytOut = new byte[ms.Position];
ms.Read(bytOut, 0, bytOut.Length);
return System.Convert.ToBase64String(bytOut, 0, bytOut.Length);
public static string Decrypt(string source)
byte[] bytIn = System.Convert.FromBase64String(source);
System.IO.MemoryStream ms = new System.IO.MemoryStream(bytIn, 0, bytIn.Length);
symmetricProvider = new AesCryptoServiceProvider();
symmetricProvider.Key = key;
symmetricProvider.IV = IV;
ICryptoTransform encrypto = symmetricProvider.CreateDecryptor();
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
System.IO.StreamReader sr = new System.IO.StreamReader(cs);
public class RsaKeyContractResolver : DefaultContractResolver
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
JsonProperty property = base.CreateProperty(member, memberSerialization);
property.Ignored = false;
public class TemporaryRsaKey
public string KeyId { get; set; }
public RSAParameters Parameters { get; set; }