using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
public static string EncryptWithCert(object payload, string certificate)
string payloadString = Newtonsoft.Json.JsonConvert.SerializeObject(payload);
string certString = certificate.Replace("-----BEGIN CERTIFICATE-----\r\n", "")
.Replace("-----END CERTIFICATE-----\r\n", "")
byte[] certData = Convert.FromBase64String(certString);
X509Certificate2 cert = new X509Certificate2(certData);
RSA publicKey = (RSA)cert.PublicKey.Key;
byte[] payloadBytes = Encoding.UTF8.GetBytes(payloadString);
byte[] encryptedBytes = publicKey.Encrypt(payloadBytes, RSAEncryptionPadding.OaepSHA256);
return Convert.ToBase64String(encryptedBytes);
public static void Main()
object payload = new { name = "John", age = 30 };
string certificate = "-----BEGIN CERTIFICATE-----\r\nMIIFXjCCA0agAwIBAgIQ87CgArQW3VRanricCh2lJTANBgkqhkiG9w0BAQUFADBr\r\nMRMwEQYDVQQDEwpzaWx2dXIuY29tMQswCQYDVQQGEwJVUzERMA8GA1UECBMITmV3\r\nIFlvcmsxFjAUBgNVBAcTDU5ldyBZb3JrIENpdHkxDzANBgNVBAoTBlNpbHZ1cjEL\r\nMAkGA1UECxMCSVQwHhcNMjMwNDIwMTIzNzQyWhcNMjUwNDIwMTIzNzQyWjBrMRMw\r\nEQYDVQQDEwpzaWx2dXIuY29tMQswCQYDVQQGEwJVUzERMA8GA1UECBMITmV3IFlv\r\ncmsxFjAUBgNVBAcTDU5ldyBZb3JrIENpdHkxDzANBgNVBAoTBlNpbHZ1cjELMAkG\r\nA1UECxMCSVQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC4Z0vfi3Ty\r\njG9jl+8u1bzSJ2vxYe4EE+wnNdLAqwKGE3c/QDtp/qVaC/hLLBWe/IS1o7VH/Z+p\r\nLclFaHaLwkeyPoW9nfyRZSis9/FuR5ssf+nZhanOpGhZ4OEjZUOB/pWJXvIlx/Pd\r\nbwG83x9adTG+uOSQJevu1v6ER7OLTlArNd6qE1wvLJ8akzIMjTgXi6KUHPazpEwK\r\nWNq2hh9xZ48kYwXe06FIH73mXeErXylbutcHUAOgyaKQvsQrwsT1Oh2ts7me8+S/\r\nYBBtz/XrjW3o3qEZ/AsqHw017HF85Czhlc3ZIFf+P4kI2B/5IeBCwpGdvxed0+4d\r\njX3LbFqW7UPRNsX9XDgqd8RtPjMnhJ23MJjo0L1nLwUc5ICqRI6q4P8BfAanYPDI\r\nAe4/7DVZfE7RGsaMOaaFKPZIu+h32Trshv26dnLe0ghmT/LFwK3F2ssP2FtKWftw\r\ncZFhdtBq3l39GdHgiSahyrtq3Vwx6Kp1tGcn/5l77QnpYtStPpXTifKXFkwRYN7S\r\nwiWMDqnhGd/uy8US+XHUVw7senbpWIbxdS0ILaWXNwbXm+Zi6okV2jTWknpwviUm\r\nk7lpyrRcG3QAFRqzmtvi6eXi2GolP/LoTswXYRcBIH/4WR2dX0S28P9pe/M0OkqY\r\nb6OSLZ8AC0vsc8IvrFNWV6/hk+D+Q7S/lwIDAQABMA0GCSqGSIb3DQEBBQUAA4IC\r\nAQBz3fVAFeinzB1+QWO7Do9fWh44A9N/TcYe3UZ5sBdm9mjoHtXGknOc/RaV1dcw\r\nus9UWpuugNerGZHUYBAYLFQjYlQUSblc2h608iuB6pq9uhywL91kqipvi/UYLWR2\r\nKY/5XWnALfVRLblbCC5f1+51lghKsq3nzi7mk4hSflf6RSTkini2ccepR+7E8SME\r\nAY8piLsSgOPOg/9F97AKN+U7k3ZmIrqJoyYwu5FeuyXzSi/LVH39i0ca/EkTQGNN\r\nbX1y2EFccHGlYoSLYqcqzOrjiSvXBsB5HgeNGWrcG+IfCLkKggLXnsdZmAOFFWXj\r\npxa+r5QCntX7qllqWlb57tNNlQ1vne927W/N5VdGB2ilJSUBxpdpj6BsYZJ9zdN2\r\nCS9tOKgHJVafFq4JtUUY4G0OFOBNufqd8KyXSY6PLcpkMiwe0VHw/DFQDgwe+YSQ\r\nedHAnIafcKiNNlKibrRlgbCh9gYIYRTQwFA3qTkv4SIqZKxKg5OHLN7P/c51lm8m\r\n+u7F7W+wyk5FCjsr8hXfqhIf31rrxcG3ZRtZbMQhNhLkw1kYXGlUr4bOsHkTNAQH\r\nA7tDzG++hPqP7sB0wJd6JlZ0lhgbK6U6+1RUn1fSSzwhxq6vXGI9JJVDK9K2wOSG\r\nF8z0bRDxgond6gmV5CzB7LSXBj3BGUZY7m80M4EnSuHJiQ==\r\n-----END CERTIFICATE-----\r\n";
string encryptedPayload = EncryptWithCert(payload, certificate);
Console.WriteLine(encryptedPayload);