C#怎么实现RSA非对称加密 C#如何用RSA算法进行公钥加密私钥解密和数字签名【安全】

应使用 RSA.Create() 创建 RSA 实例,避免过时的 RSACryptoServiceProvider;密钥导出用 ExportPkcs8PrivateKey/ExportSubjectPublicKeyInfo;加密须用 OAEP-SHA256 且校验明文长度;签名用 SignData/VerifyData 并指定 SHA256 和 PKCS1;私钥严禁明文存储。用 RSA.Create() 创建实例,别碰过时的 RSACryptoServiceProvider新版 .NET(.NET Core 2.0+ / .NET 5+)里 RSACryptoServiceProvider 已标记为过时,它依赖 Windows CryptoAPI,跨平台不兼容,且默认密钥大小受限(比如老版本只支持最多 16384 位但实际常卡在 4096)。直接用 RSA.Create() 是唯一推荐路径------它自动适配当前运行时的最优实现(Windows 上走 CNG,Linux/macOS 走 OpenSSL)。常见错误:硬编码 new RSACryptoServiceProvider(2048),跑在 Linux 容器里直接抛 PlatformNotSupportedException。RSA.Create(2048) 创建新密钥对;需要持久化时调用 ExportPkcs8PrivateKey()(私钥)或 ExportSubjectPublicKeyInfo()(公钥),二进制字节流,不是 PEM 字符串如果必须读 PEM 格式(如 OpenSSL 生成的 id_rsa.pub),得先用第三方库(如 BouncyCastle)转,.NET 原生不解析 PEM 封装密钥长度选 2048 足够多数场景;3072 更稳妥;4096 增加开销,加密/解密耗时明显上升(尤其服务端高频解密时)公钥加密必须用 Encrypt() + OAEP SHA256,别用 PKCS1PKCS1 填充模式已被证明存在 Bleichenbacher 攻击风险,.NET 默认仍保留但它不该出现在新代码里。OAEP 是唯一安全选择,且必须显式指定哈希算法------new RSAEncryptionPadding.OaepSHA256(),不能只写 RSAEncryptionPadding.Oaep(会默认用 SHA1,而 SHA1 已不安全)。典型翻车现场:传入 Encoding.UTF8.GetBytes("hello") 直接加密,结果解密失败------RSA 对明文长度敏感,2048 位密钥下 OAEP-SHA256 最多只能加密 190 字节左右数据。超长内容得先用 AES 加密,再用 RSA 加密 AES 密钥(即混合加密)。加密前务必检查明文长度:rsa.KeySize / 8 - 42(OAEP-SHA256)或 rsa.KeySize / 8 - 11(PKCS1,不推荐)公钥加密仅适合小数据(如会话密钥、token ID),绝不要拿来加密用户上传的 PDF 或 JSON解密方必须用同一私钥 + 同样填充方式,否则抛 CryptographicException:"The parameter is incorrect."签名用 SignData(),验签用 VerifyData(),别混淆加密和签名接口RSA 签名不是"用私钥加密",而是基于摘要的数学运算。SignData() 内部自动做哈希(如 SHA256)再签名,VerifyData() 自动复现同样哈希过程。手动先哈希再调 SignHash() 容易出错,且失去 .NET 对哈希算法绑定的保护。 Tellers AI Tellers是一款自动视频编辑工具,可以将文本、文章或故事转换为视频。

相关推荐
landyjzlai2 小时前
蓝迪哥玩转Ai(8)---端侧AI:RK3588 端侧大语言模型(LLM)开发实战指南
人工智能·python
S1998_1997111609•X4 小时前
论当今社会主义与人文关怀人格思想下的恶意仿生注入污染蜜罐描述进行函数值非法侵入爬虫的咼忄乂癿〇仺⺋.
数据库·网络协议·百度·ssh·开闭原则
我叫黑大帅4 小时前
如何通过 Python 实现招聘平台自动投递
后端·python·面试
其实防守也摸鱼4 小时前
CTF密码学综合教学指南--第九章
开发语言·网络·python·安全·网络安全·密码学·ctf
砚底藏山河5 小时前
Python量化开发:2026最佳实时股票数据API接口推荐与对比
开发语言·windows·python
倔强的石头_5 小时前
kingbase备份与恢复实战(六)—— 备份自动化与保留策略:Windows任务计划+日志追溯
数据库
研究点啥好呢5 小时前
专为求职者开发的“面馆”!!!摆脱面试焦虑!!!
python·面试·开源·reactjs·求职招聘·fastapi
轻刀快马6 小时前
别被 ORM 框架宠坏了:从一场“订单消失”悬案,看懂 MySQL 为什么要强推 InnoDB
数据库·mysql
DFT计算杂谈6 小时前
自动化脚本一键绘制三元化合物相图
java·运维·服务器·开发语言·前端·python·自动化
EW Frontier7 小时前
6G ISAC新范式:基于智能漏波天线的Wi‑Fi通感一体化系统设计与实测【附MATLAB+python代码】
开发语言·python·matlab·music·isac·doa·wi‑fi