반응형

 

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;
}

 

반응형

'Spadeworks > C#' 카테고리의 다른 글

gRPC DateTime C# 예제  (0) 2023.09.14
C# Convert TimeSpan to DateTime  (0) 2023.09.14

+ Recent posts