using System.Security.Cryptography;
public static void Main()
var customerCode = "9876543210";
var nationalCode = "0123456789";
var inputText = $"{customerCode}-{nationalCode}";
var signText = SignByPrivateKey(inputText);
Console.WriteLine($"Signature: {signText}");
var isVerified = VerifyByPublickKey(inputText, signText);
Console.WriteLine($"Verified: {isVerified}");
public static string SignByPrivateKey(string inputText)
var inputBytes = Encoding.Unicode.GetBytes(inputText);
using var rsa = RSA.Create();
rsa.ImportFromPem(s_pemPrivateKey);
var signedBytes = rsa.SignData(inputBytes, HashAlgorithmName.SHA1, RSASignaturePadding.Pkcs1);
return Convert.ToBase64String(signedBytes);
public static bool VerifyByPublickKey(string inputText, string signature)
var inputBytes = Encoding.Unicode.GetBytes(inputText);
var signBytes = Convert.FromBase64String(signature);
using var rsa = RSA.Create();
rsa.ImportFromPem(s_pemPublicKey);
var isVerified = rsa.VerifyData(inputBytes, signBytes, HashAlgorithmName.SHA1, RSASignaturePadding.Pkcs1);
static string s_pemPrivateKey = @"-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCQq5094oTTQbD601MQNWkgQjHXbfuIWSqYxpWZgzpIxl1gUNi4
n6LMKZUW7JT1Wpp/9s4WaAhmdGAmHjCo8cRNvWo/B2XkwsXveH2XYnhbWDOv7zGy
ycjVl+aN01JN3XszbPrw5edhygXdJz2MiGeRBahm9kd04XjdiTS+mnDHbwIDAQAB
AoGASrEP4d+NjDSiVx28COZKfGkwqnUSJHdE0tPUcQmbke84Tn3vJoLk3lupqchD
r9kzY1XdWRwlGiCDc6qqnM8V9fW5v4GmKP6mGGOHwxocw8KIOnh53nptu6q/OoZm
5PK4n5qhISiA53wdYjkqe5jfrQBhqNLWb0YQqqtOdalD9IECQQDQTsgWjPHhQB30
ADl+3LVVOxie9EgJRHfAtSibedabNaMkThj8I1QJma2AdzCGfPk/tpL9lB25ymNI
8CXwdlu/AkEAscr0PJ1uMvgSJfmreIlLaFqyuhl4wwb/r9QNgHewDS1tCEyEEg+2
fnD6+TUmFSOn5z6oglhaHfemQSrVrXJAUQJAAwuDxUCeMIq9ZVmzfXVAeVR50akE
fI4xqfF7/HnVd0NbdSZnGxhxHArRDHWxkeW1xwamM2q83IBm3yQTieZRBQJAYGjf
vCbaZQUkQjd7BifdHj9gf43kcE1RRTVGBQ3iB6NEZqWnUGv41+PIFG7/saLeH4VY
tyXV6D4sh1YE/MLhoQJAZMNe4nEk+0+ajh1eUcw1F7POqY4tx4XYInNlLbe8f64l
ZKZ9NYJFINlZpo3wrUCoSoove37f0fPLZ1mkoU3yOw==
-----END RSA PRIVATE KEY-----
static string s_pemPublicKey = @"-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCQq5094oTTQbD601MQNWkgQjHX
bfuIWSqYxpWZgzpIxl1gUNi4n6LMKZUW7JT1Wpp/9s4WaAhmdGAmHjCo8cRNvWo/
B2XkwsXveH2XYnhbWDOv7zGyycjVl+aN01JN3XszbPrw5edhygXdJz2MiGeRBahm
-----END PUBLIC KEY-----";