C# 从rsaparms加载RSA公钥
我需要在C#中生成RSA密钥对,然后将公钥存储在数据库中,以便稍后以JWK格式使用 但是我无法从RSAParams.module获取字符串 我尝试了UTF8、UTF32和通用编码,但仍然没有显示出来 以下是MSDN站点的代码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
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;}