惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
博客园_首页
H
Help Net Security
GbyAI
GbyAI
aimingoo的专栏
aimingoo的专栏
V
Visual Studio Blog
The Cloudflare Blog
腾讯CDC
Jina AI
Jina AI
Last Week in AI
Last Week in AI
月光博客
月光博客
博客园 - 叶小钗
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
Blog — PlanetScale
Blog — PlanetScale
人人都是产品经理
人人都是产品经理
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 聂微东
爱范儿
爱范儿
N
Netflix TechBlog - Medium
F
Fortinet All Blogs

博客园 - runliuv

网易 S9 PRO 椅子 螺丝规格 VISUAL STUDIO 如果查找即带Contains,又带SubAgentId 字样的代码? 屏蔽论坛头像图片 WIN10,WIN11 微信 多开 微信付款码支付:“暂无权限使用该授权码,请联系客服处理” Windows 7虚拟机安装Vmware tools 装不了 WIN7 trea 默认utf-8-bom,.editorconfig 蓝湾 Q36 手柄 说明书 京东APP 如何查看 京东支付 的交易明细 银行卡 禁用firefox自动更新,149及以上版本 Microsoft SQL Server Enterprise 2025 v17.0 正式发布 ISO 镜像 小米电脑管家 妙享桌面 无法输入数字 建行支付接口,退款时提示:服务端返回异常(HTTP状态码:400)(如果该笔交易为帐务交易,则处理结果不确定,请先核对明细!) windows win10 win11 打开图片、照片慢、卡 微PE 官网 WINPE QKeyMapper runliuv EC版国密SM2私钥解析C#.NET FFmpeg 截取视频 runliuv 麦当劳9.9元早餐活动,到哪儿领取? 2026.03 录 MP3 录制 软件 Audacity PowerShell将我的文档、图片、视频等目录复制备份到D盘 抖音网页发布视频时,如何声明是A创作的? Realtek HD Audio Driver for DCH,这个DCH是什么意思 ? Realtek Audio Control 在微软应用商店地址 IDEA一个项目多JAR包文件夹 WIN10 WIN11 命令快速锁屏 使用PowerShell一键备份我的文档视频图片等 C#.NET MVC 前端JS的AES加密 C#.NET 从国密私钥中提取出(导出)公钥,SM2 重庆银行,国密SM4,自定义算法,C#.NET版
使用 openssl 生成国密 公钥 私钥 公私钥 EC PRIVATE KEY
runliuv · 2026-07-21 · via 博客园 - runliuv

使用 openssl 生成国密 公钥 私钥 公私钥 EC PRIVATE KEY

"-----BEGIN EC PRIVATE KEY-----"

"-----END EC PRIVATE KEY-----"

OpenSSL 3.0+(Ubuntu 22.04/24.04 等) 命令:

# 生成 SM2 私钥
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:sm2 -out sm2_private_key.pem

# 导出公钥
openssl pkey -in sm2_private_key.pem -pubout -out sm2_public_key.pem

C# .NET 读取 (需要引用  BouncyCastle 库)

string privateKeyPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "sm2certs", "opensslgen1", "sm2_private_key.txt");
string publicKeyPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "sm2certs", "opensslgen1", "sm2_public_key.txt");

string mchPrivateKeyBase64 = File.ReadAllText(privateKeyPath);
mchPrivateKeyBase64 = mchPrivateKeyBase64.Replace("-----BEGIN EC PRIVATE KEY-----", "").Replace("-----END EC PRIVATE KEY-----", "")
    .Replace("-----BEGIN PRIVATE KEY-----", "").Replace("-----END PRIVATE KEY-----", "");

string platPubKeyBase64 = File.ReadAllText(publicKeyPath);
platPubKeyBase64 = platPubKeyBase64.Replace("-----BEGIN PUBLIC KEY-----", "").Replace("-----END PUBLIC KEY-----", "")
    .Replace("-----BEGIN PUBLIC KEY-----", "").Replace("-----END PUBLIC KEY-----", "");

 AsymmetricKeyParameter mchPrivateKey = PrivateKeyFactory.CreateKey(Convert.FromBase64String(mchPrivateKeyBase64));
 if (mchPrivateKey != null)
 {
     Console.WriteLine("私钥正常:");
 }

AsymmetricKeyParameter platPubKeyObj = PublicKeyFactory.CreateKey(Convert.FromBase64String(platPubKeyBase64));
if (platPubKeyObj != null)
{
    Console.WriteLine("公钥正常:");
}

--