C# 从rsaparms加载RSA公钥

C# 从rsaparms加载RSA公钥,c#,cryptography,rsa,C#,Cryptography,Rsa,我需要在C#中生成RSA密钥对,然后将公钥存储在数据库中,以便稍后以JWK格式使用 但是我无法从RSAParams.module获取字符串 我尝试了UTF8、UTF32和通用编码,但仍然没有显示出来 以下是MSDN站点的代码 try { // Create a new RSACryptoServiceProvider object. using (RSACryptoServiceProvider RSA = new RSACrypt

我需要在C#中生成RSA密钥对,然后将公钥存储在数据库中,以便稍后以JWK格式使用

但是我无法从RSAParams.module获取字符串

我尝试了UTF8、UTF32和通用编码,但仍然没有显示出来

以下是MSDN站点的代码

try
        {
            // Create a new RSACryptoServiceProvider object.
            using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
            {

                //Export the key information to an RSAParameters object.
                //Pass false to export the public key information or pass
                //true to export public and private key information.
                RSAParameters RSAParams = RSA.ExportParameters(true);

                byte[] modulus = RSAParams.Modulus;
                var str = System.Text.Encoding.UTF8.GetString(RSAParams.Modulus);
                Console.WriteLine(str);
                Console.ReadKey();

            }
        }
        catch (CryptographicException e)
        {
            //Catch this exception in case the encryption did
            // not succeed.
            Console.WriteLine(e.Message);
        }

谢谢。

我假设您希望输出为base64。然后可以使用
Convert.ToBase64String
转换RSA密钥的
指数
模数
部分:

var指数=Convert.tobase64字符串(rsaparms.module);
var模数=Convert.tobase64字符串(rsaparms.index);

这与您在注释中的解决方案相同(请参阅),但它确实需要绕道XML。

公钥是指数和模数的组合,因此您必须将两者序列化。您希望输出的格式是什么?谢谢@a-ctor纯文本(字符串)。另外,请查看答案,因为您当前正在将生成的密钥存储在文件系统中。谢谢,我最终使用XML读取了值。。不确定这样做是否正确。string publicKeyXML=RSA.ToXmlString(false);XDocument doc=XDocument.Parse(publicKeyXML);foreach(doc.XPathSelectElement(“//RSAKeyValue”)中的XElement元素.subjections(){string value=element.value;}