如何直接将 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 对象初始化程序,您可以从中多次导入...
创建必要的验证参数以便调用 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 对象初始化程序,您可以从中多次导入...