如何直接将 RSAParameters(RSACryptoServiceProvider 的)设置为 RSA Public 密钥

How Can I Set RSAParameters (of RSACryptoServiceProvider) to an RSA Public Key Directly

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

我知道我可以做到:

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

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

我想直接设置 public 键,而不是单独设置模数和指数。如何做到这一点?

如果您保存的密钥类似于 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 对象初始化程序,您可以从中多次导入...