You need to enable JavaScript to run this app. 如何在.NET Core中使用OpenSSL?安装NuGet包后使用方法咨询
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET Core中使用OpenSSL?安装NuGet包后使用方法咨询

System.Security.Cryptography.OpenSsl 实用使用指南

这个包是.NET生态对原生OpenSSL加密能力的封装,仅在Linux、macOS等类Unix系统下生效,Windows环境下运行时会自动切换为系统内置的CNG加密实现,无需额外修改代码即可实现跨平台兼容。

1. 常用使用示例

生成RSA密钥对

// 推荐使用工厂方法创建实例,自动适配当前系统加密实现
using RSA rsa = RSA.Create(2048); // 密钥长度2048位,可根据需求调整

// 导出公钥PEM格式
string publicKeyPem = rsa.ExportSubjectPublicKeyInfoPem();
// 导出私钥PEM格式(敏感信息,注意加密存储)
string privateKeyPem = rsa.ExportPkcs8PrivateKeyPem();

如果需要强制指定使用OpenSSL实现,可以直接实例化:

using RSA rsa = new RSAOpenSsl(2048);

RSA加密解密

// 加密:默认使用OAEP填充,兼容性更高
byte[] plainData = System.Text.Encoding.UTF8.GetBytes("待加密的测试文本");
byte[] encryptedData = rsa.Encrypt(plainData, RSAEncryptionPadding.OaepSHA256);

// 解密
byte[] decryptedData = rsa.Decrypt(encryptedData, RSAEncryptionPadding.OaepSHA256);
string decryptedText = System.Text.Encoding.UTF8.GetString(decryptedData);

计算文件哈希值

using var sha256 = SHA256.Create();
using var fileStream = File.OpenRead("待计算哈希的文件路径");
byte[] hashBytes = sha256.ComputeHash(fileStream);
string hashHex = Convert.ToHexString(hashBytes).ToLower(); // 转为小写16进制哈希值

数字签名与验签

// 待签名的数据
byte[] data = System.Text.Encoding.UTF8.GetBytes("待签名的内容");
// 签名
byte[] signature = rsa.SignData(data, HashAlgorithmName.SHA256, RSASignaturePadding.Pss);

// 验签,使用公钥实例进行验证
bool isValid = rsa.VerifyData(data, signature, HashAlgorithmName.SHA256, RSASignaturePadding.Pss);

2. 注意事项

  • 无跨平台强制要求时,不要直接实例化RSAOpenSsl、SHA256OpenSsl等带OpenSsl后缀的类,推荐使用RSA.Create()、SHA256.Create()等工厂方法,运行时会自动匹配当前系统最优实现,无需处理平台兼容问题
  • 密钥导出导入优先使用内置的PEM系列方法(.NET 5及以上版本支持),不需要手动拼接PEM格式头尾字符串
  • 所有加密类都实现了IDisposable接口,使用时建议用using语句包裹,自动释放非托管资源,避免内存泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 15:15:01