C# RSA 加密,解密

对这篇的一点补充

【转】C# RSA 加密,解密与签名,验证签名 - J.晒太阳的猫 - 博客园

上文提到的加解密代码,需要使用到 BouncyCastle 库,如何不使用这个库处理 Rsa 的加解密?

代码见:
RSA 加密解密

但是有一点点问题,.net 原生库要求使用 xml 的密钥表示,需要将 base64 的表示转换为 xml 的表示。

可以使用 .net core 版本的 RSACryptoServiceProvider 类来实现。

私钥转 xml 形式 string

RSA.ImportPkcs8PrivateKey(ReadOnlySpan, Int32) 方法 (System.Security.Cryptography) | Microsoft Docs

// 私钥转 xml 形式 string
var provider = new RSACryptoServiceProvider();
provider.ImportPkcs8PrivateKey(Convert.FromBase64String(RsaEncryptConstant.PrivateKey), out _);
var xmlString = provider.ToXmlString(true);

公钥转 xml 形式 string

RSA.ImportSubjectPublicKeyInfo(ReadOnlySpan, Int32) 方法 (System.Security.Cryptography) | Microsoft Docs

// 公钥转 xml 形式 string
var provider = new RSACryptoServiceProvider();
provider.ImportSubjectPublicKeyInfo(Convert.FromBase64String(RsaEncryptConstant.PublicKey), out _);
var xmlString = provider.ToXmlString(false);

其它

在 .net45 上要如何处理?
可以预先处理好(如果预先就知道密钥),
要编码处理…… 没有研究,应该有对应的方法。
找到欢迎留言。

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/jasongrass/p/15045810.html