RSA의 공개키와 개인키를 XML 형식으로 생성하는 예제이다.
using System.Security.Cryptography;
public void CreateRSAKey()
{
using (RSA rsa = RSA.Create())
{
// 개인 키 추출
RSAParameters privateKeyParameters = rsa.ExportParameters(true);
// 개인 키를 TEXT 형식으로 출력
rsa.ImportParameters(privateKeyParameters);
string privateKeyText = rsa.ToXmlString(true);
Console.WriteLine("\n개인 키:\n" + privateKeyText);
// 공개 키 추출
RSAParameters publicKeyParameters = rsa.ExportParameters(false);
// 공개 키를 TEXT 형식으로 출력
rsa.ImportParameters(publicKeyParameters);
string publicKeyText = rsa.ToXmlString(false);
Console.WriteLine("공개 키:\n" + publicKeyText);
}
}
생성한 공개키를 이용해 암호화 하는 예제
public void Encrypt(string text)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(publicKey);
byte[] utf = (new UTF8Encoding()).GetBytes(text);
byte[] encrypt = rsa.Encrypt(utf, false);
string result = Convert.ToBase64String(encrypt);
}
생성한 개인키를 이용해 복호화 하는 예제
public void Decrypt(string text)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(privateKey);
byte[] base64 = Convert.FromBase64String(text);
byte[] decrypt = rsa.Decrypt(base64, false);
string dec = (new UTF8Encoding()).GetString(decrypt, 0, decrypt.Length);
string result = dec;
}