You need to enable JavaScript to run this app. UWP AsymmetricKeyAlgorithmProvider.ExportPublicKey在.NET Standard RSACryptoServiceProvider的等效实现
优惠活动
大模型
产品
解决方案
定价
更多

UWP AsymmetricKeyAlgorithmProvider.ExportPublicKey在.NET Standard RSACryptoServiceProvider的等效实现

UWP RSA公钥导出逻辑的.NET Standard 2.0等效实现

原功能需求

实现与以下UWP代码完全等效的RSA密钥生成、公钥导出逻辑,输出公钥可被原有服务端直接识别:

var rsa = AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithmNames.RsaPkcs1);
var keyPair = rsa.CreateKeyPair(2048);
var publicKey = keyPair.ExportPublicKey();
var publicKeyStr = Convert.ToBase64String(publicKey.ToArray());

原有方案失效原因

  • 调用RSACryptoServiceProvider.ExportCspBlob导出的是微软专有CSP格式公钥,和UWP默认输出的标准PKCS#1 ASN.1编码公钥格式不兼容
  • 导出PEM格式时如果使用PKCS#8规范、或是额外添加了非必要格式头,也会导致服务端校验不通过

正确实现方案

.NET Standard 2.0 原生支持RSA公钥的PKCS#1格式导出,无需引入第三方库,实现代码如下:

using System.Security.Cryptography;

// 生成2048位RSA密钥对
using var rsa = RSA.Create(2048);
// 导出PKCS#1格式公钥原始字节,与UWP ExportPublicKey()输出格式完全一致
byte[] publicKeyBytes = rsa.ExportRSAPublicKey();
// 转换为Base64字符串,对齐UWP最终输出结果
string publicKeyStr = Convert.ToBase64String(publicKeyBytes);

如果需要输出带标准头尾的PEM格式公钥,可使用以下扩展逻辑:

string publicKeyPem = @$"-----BEGIN RSA PUBLIC KEY-----
{Convert.ToBase64String(publicKeyBytes, Base64FormattingOptions.InsertLineBreaks)}
-----END RSA PUBLIC KEY-----";

内容的提问来源于stack exchange,提问作者Fernando

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 02:15:05