RSA Example
unknown
csharp
4 years ago
2.4 kB
43
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...