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

如何在C#(用jose-jwt库)将Base64验证密钥转为EC(ES256)公钥

在C#中用jose-jwt库解析ES256公钥(对应Java实现)

直接上和你提供的Java逻辑完全匹配的C#代码:

using System;
using System.Security.Cryptography;
using Jose;

// 替换为Play Console提供的Base64编码密钥
string base64EncodedKey = "你的Base64密钥字符串";

// 解码Base64为字节数组(对应Java的Base64.decode)
byte[] keyBytes = Convert.FromBase64String(base64EncodedKey);

// 加载X509格式的EC公钥(对应Java的KeyFactory.generatePublic(X509EncodedKeySpec))
using (ECDsa ecdsa = ECDsa.Create())
{
    ecdsa.ImportSubjectPublicKeyInfo(keyBytes, out _);
    
    // 示例:用该公钥验证ES256签名的JWT
    string jwtToken = "待验证的JWT令牌";
    var verifiedPayload = JWT.Decode(jwtToken, ecdsa, JwsAlgorithm.ES256);
}

关键说明:

  • Convert.FromBase64String完成Java中Base64.decode的Base64解码工作。
  • ECDsa.ImportSubjectPublicKeyInfo方法负责解析X509编码的EC公钥,和Java里通过X509EncodedKeySpec生成公钥的逻辑一致。
  • 如果你拿到的是URL安全的Base64(部分场景下Play Console会返回这种格式,用-和_替代+和/,无Padding),需要先转换为标准Base64:
// 处理URL安全Base64
string standardBase64 = base64EncodedKey.Replace('-', '+').Replace('_', '/');
// 补全必要的Padding
while (standardBase64.Length % 4 != 0)
{
    standardBase64 += '=';
}
byte[] keyBytes = Convert.FromBase64String(standardBase64);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:40:25