DotNetCore:生成RSA私钥/公钥

问题描述 投票:1回答:1

我必须转换下面的dotnet框架代码,以生成dotnet核心中的RSA公钥和私钥。

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
string publicKey = RSA.ToXmlString(false);
string privateKey = RSA.ToXmlString(true);

Dotnet Core不支持ABove Code并抛出以下错误:

发生异常:CLR / System.PlatformNotSupportedException System.Security.Cryptography.Algorithms.dll中出现未处理的“System.PlatformNotSupportedException”类型异常:“此平台不支持此操作。”在System.Security.Cryptography.RSA.ToXmlString(Boolean includePrivateParameters)

解决方案:以下扩展适用于我

public static class RSACryptoServiceProviderExtensions
    {
         public static void ToXmlFile(this RSA rsa, bool includePrivateParameters, string xmlFilePath)  
        {  
            RSAParameters parameters = rsa.ExportParameters(includePrivateParameters);  
            File.WriteAllText(xmlFilePath,  
                string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent><P>{2}</P><Q>{3}</Q><DP>{4}</DP><DQ>{5}</DQ><InverseQ>{6}</InverseQ><D>{7}</D></RSAKeyValue>",  
                  parameters.Modulus != null ? Convert.ToBase64String(parameters.Modulus) : null,  
                  parameters.Exponent != null ? Convert.ToBase64String(parameters.Exponent) : null,  
                  parameters.P != null ? Convert.ToBase64String(parameters.P) : null,  
                  parameters.Q != null ? Convert.ToBase64String(parameters.Q) : null,  
                  parameters.DP != null ? Convert.ToBase64String(parameters.DP) : null,  
                  parameters.DQ != null ? Convert.ToBase64String(parameters.DQ) : null,  
                  parameters.InverseQ != null ? Convert.ToBase64String(parameters.InverseQ) : null,  
                  parameters.D != null ? Convert.ToBase64String(parameters.D) : null)  
                  );  
        }  
    }
.net-core rsa
1个回答
0
投票

不建议使用RSACryptoServiceProvider。我认为你仍然可以使用它安装包System.Security.Cryptography.Algorithms

另一种方法是使用qazxsw poi基类,引用qazxsw poi:

.NET核心

RSA
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.