RSA Example
unknown
csharp
4 years ago
2.4 kB
51
Indexable
using System;
using System.Security.Cryptography;
namespace RSATest
{
class Program
{
public static void Main()
{
var (privKey, pubKey) = GenerateRSAKeys();
var secret = BobSendSecret(pubKey);
AliceReadSecret(secret, privKey);
}
public static string BobSendSecret(string pubKey)
{
return RSAEncrypt("foobar", pubKey);
}
public static void AliceReadSecret(string secret, string privKey)
{
var text = RSADecrypt(secret, privKey);
Console.WriteLine(text);
}
public static string RSAEncrypt(string msg, string pubKey)
{
var csp = new RSACryptoServiceProvider();
csp.ImportParameters(DeserializeRSAKey(pubKey));
var bytesPlainTextData = System.Text.Encoding.Unicode.GetBytes(msg);
var bytesCypherText = csp.Encrypt(bytesPlainTextData, false);
return Convert.ToBase64String(bytesCypherText);
}
public static string RSADecrypt(string msg, string privKey)
{
var bytesCypherText = Convert.FromBase64String(msg);
var csp = new RSACryptoServiceProvider();
csp.ImportParameters(DeserializeRSAKey(privKey));
var bytesPlainTextData = csp.Decrypt(bytesCypherText, false);
return System.Text.Encoding.Unicode.GetString(bytesPlainTextData);
}
public static (string, string) GenerateRSAKeys()
{
var csp = new RSACryptoServiceProvider();
var privKey = SerializeRSAKey(csp.ExportParameters(true));
var pubKey = SerializeRSAKey(csp.ExportParameters(false));
return (privKey, pubKey);
}
public static string SerializeRSAKey(RSAParameters rsaParams)
{
var sw = new System.IO.StringWriter();
var xs = new System.Xml.Serialization.XmlSerializer(typeof(RSAParameters));
xs.Serialize(sw, rsaParams);
return sw.ToString();
}
public static RSAParameters DeserializeRSAKey(string serKey)
{
var sr = new System.IO.StringReader(serKey);
var xs = new System.Xml.Serialization.XmlSerializer(typeof(RSAParameters));
return (RSAParameters)xs.Deserialize(sr);
}
}
}
Editor is loading...