Generate RSA public and private keys, export to XML

This tip shows how RSA keys can be saved to disk as an XML file. The XML files can then be used to make an RSA secure channel

The following method shows how RSA keys can be saved to disk as an XML file. The XML files can then be used to make an RSA secure channel -- the public key is used for encryption and the private one for decryption.
/// <summary>
/// Generates 2 XML files (public and private key) 
/// </summary> 
/// <param name="privateKeyPath">RSA private key file path</param> 
/// <param name="publicKeyPath">RSA private key file path</param> /
// <param name="size">secure size must be above 512</param> 
public static void GenerateRsa(string privateKeyPath, string publicKeyPath, int size) 
{
    //stream to save the keys
    FileStream fs = null;
    StreamWriter sw = null;

    //create RSA provider
    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(size);
    try
    {
        //save private key
        fs = new FileStream(privateKeyPath, FileMode.Create, FileAccess.Write);
        sw = new StreamWriter(fs);
        sw.Write(rsa.ToXmlString(true));
        sw.Flush();
    }
    finally
    {
        if (sw != null) sw.Close();
        if (fs != null) fs.Close();
    }

    try
    {
        //save public key
        fs = new FileStream(publicKeyPath, FileMode.Create, FileAccess.Write);
        sw = new StreamWriter(fs);
        sw.Write(rsa.ToXmlString(false));
        sw.Flush();
    }
    finally
    {
        if (sw != null) sw.Close();
        if (fs != null) fs.Close();
    }
    rsa.Clear();
}

This was first published in May 2007

0 comments

Oldest 

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

-ADS BY GOOGLE

SearchCloudComputing

SearchSoftwareQuality

SearchSOA

TheServerSide

SearchCloudApplications

Close