如何直接将RSAParameters(RSACryptoServiceProvider)设置为RSA公钥

时间:2018-02-21 16:08:19

标签: c# jwt rsa

创建必要的验证参数以调用JwtSecurityTokenHandler ValidateToken()......

我知道我可以这样做:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(new RSAParameters() 
    {                
        Modulus = "",
        Exponent = ""
    });

var validationParameters = new TokenValidationParameters
    {
        IssuerSigningKey = new RsaSecurityKey(rsa)
    };

我想直接设置公钥,而不是单独设置模数和指数。怎么办呢?

1 个答案:

答案 0 :(得分:0)

如果您保存的密钥看起来像xmldsig RSAKeyValue(<RSAKeyValue><Modulus>base64</Modulus><Exponent>base64</Exponent></RSAKeyValue>),并且您不在.NET Core上,则可以使用rsa.FromXmlString(keyString)

如果您保存的密钥格式更改为CAPI blob的byte[]表示形式,那么您可以使用rsa.ImportCspBlob(keyBlob)

如果您保存的密钥格式更改为CNG blob的byte[]表示,那么您可以使用new RSACng(CngKey.Import(blob, blobType))

否则,您可以拥有最少的代码,并带有以下想法:

  • 您可以创建一个从存储格式构建RSAParameters的功能。
  • 将本地存储格式更改为两个阵列。
  • 将您的硬编码格式更改为RSAParameters对象初始化程序,您可以多次导入...