You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET Core中创建基于RSAPSS算法的RSA实例?

问题根因

RSA.Create(string algorithm)方法的入参是基础加密算法标识符,RSAPSS并非独立的RSA算法类型,而是RSA算法的签名填充模式。.NET Framework对RSAPSS这个算法名做了特殊兼容映射,所以可以正常返回实例;但.NET Core/.NET 5重构了加密层后,移除了这个非标准的映射规则,所以传入RSAPSS会直接返回null。

可行解决方案

无需特殊指定算法名创建实例,所有.NET Core/.NET 5+的默认RSA实现都原生支持PSS填充,仅需在签名、验签环节指定填充模式即可:

  • 第一步:创建普通RSA实例(Windows、Linux跨平台兼容)
// 直接创建默认RSA实例即可,不需要传参数指定RSAPSS
var rsa = RSA.Create(2048);
  • 第二步:签名/验签时指定PSS填充
// 签名示例
byte[] data = new byte[] { 1,2,3,4,5 };
byte[] signature = rsa.SignData(
    data, 
    HashAlgorithmName.SHA256, 
    RSASignaturePadding.Pss);

// 验签示例
bool isValid = rsa.VerifyData(
    data, 
    signature, 
    HashAlgorithmName.SHA256, 
    RSASignaturePadding.Pss);
  • 如果你仅需要在Windows环境运行,也可以直接实例化RSACng,本身支持PSS填充:
var rsa = new RSACng(2048);
疑问澄清

官方文档描述的Windows、Linux均支持PSS填充是完全准确的,该能力和RSA实例的创建方式无关,仅需在调用签名/验签方法时指定RSASignaturePadding.Pss参数即可生效,不需要在创建实例阶段做特殊配置。

内容的提问来源于stack exchange,提问作者Selman Genç

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:54:04