C#中如何从ECDsa实例导出公钥
C# ECDsa公钥导出方法
基础配对导出(和ExportECPrivateKey对应)
如果你使用的是 .NET 5 及更高版本,可以直接调用ExportECPublicKey()方法,和你已经在用的ExportECPrivateKey()配对,功能完全对标RSA的ExportRSAPublicKey():
ECDsa ecdsa = ECDsa.Create(); byte[] priKey = ecdsa.ExportECPrivateKey(); // 导出EC格式公钥,和私钥配对 byte[] pubKey = ecdsa.ExportECPublicKey();
通用跨场景导出
如果需要跨语言、跨系统兼容的公钥格式,可以导出X.509标准的SubjectPublicKeyInfo格式公钥,该方法在.NET Core 3.0+、.NET 5+均支持:
byte[] spkiPubKey = ecdsa.ExportSubjectPublicKeyInfo();
PEM格式直接导出(.NET 7+支持)
如果需要直接输出PEM格式的公钥字符串,不需要手动拼接头尾和转码,可以用对应的PEM导出方法:
// EC格式PEM公钥 string ecPubKeyPem = ecdsa.ExportECPublicKeyPem(); // SPKI格式PEM公钥 string spkiPubKeyPem = ecdsa.ExportSubjectPublicKeyInfoPem();
低版本.NET Framework兼容方案
如果使用的是.NET Framework 4.x版本,没有上述内置导出方法,可以通过导出公钥参数的方式获取公钥信息:
// 传入false表示仅导出公钥参数 ECParameters pubParams = ecdsa.ExportParameters(false); // 可按需将pubParams的Curve、Q.X、Q.Y等字段序列化为自定义格式的字节数组
内容的提问来源于stack exchange,提问作者Matthew Layton
相关产品推荐
相关产品推荐

