using System.Security.Cryptography;
public static void Main()
Random random = new Random();
string PEMPub = "-----BEGIN RSA PUBLIC KEY-----MIIBCgKCAQEAwVNI1yXWaRUTlUuKsTQq0vnLCuoaSExlBx7djRMCkya0UNjhFGFOopMwJz7dHwR0YnHuteZqZbNn4/hkOoF1ggI0Kc9Ps9ZM2veAyDcnLt7mAa+xWPucUMQoW++W0MRxKu1jc37wGNoQaxx839zbkeCu8Wks4avPexyh5/eF3XdmWOspylTa2Z3RrU0fKXxa/mH9XfTqeH5b5MIlYF7R1jMW2n+w99GI/yhoMRDqy0O8Enaqq+D8yfP3yoh6bgvlTaovWdDBYIYk0weTaguLCEYF/4Q5HnwHgbtR6ckjiP2Oesye/E11wioQGvByZ9Na6W4wSm65ZIPd9z2+B5dZAQIDAQAB-----END RSA PUBLIC KEY-----";
var token = "4b07fce9-6015-4d20-a5ab-b9076d005d55" + "+" + DateTime.Now.AddHours(1).AddMinutes(2).ToString("yyyy-MM-dd HH:mm") + "+" + random.Next(100000000, 999999999);
var encryptedData = EncryptionHelper.encryptData(token, PEMPub);
Console.WriteLine("encryptedData: " + encryptedData);
public class EncryptionHelper
private const int DW_KEY_SIZE = 2048;
public static string decryptData(string encryptedData, string privateKey)
RSACryptoServiceProvider csp = new RSACryptoServiceProvider(DW_KEY_SIZE);
csp.ImportFromPem(privateKey);
var dataBytes = Convert.FromBase64String(encryptedData);
return Encoding.UTF8.GetString(csp.Decrypt(dataBytes, false));
public static string encryptData(string data, string publicKey)
RSACryptoServiceProvider csp = new RSACryptoServiceProvider(DW_KEY_SIZE);
csp.ImportFromPem(publicKey);
var dataBytes = Encoding.UTF8.GetBytes(data);
return Convert.ToBase64String(csp.Encrypt(dataBytes, false));