c# - 为 RSACryptoProvider 和 BouncyCastle 生成密钥/加密/解密
问题描述
通过 RSACryptoProvider 生成的密钥适用于 BouncyCastle 加密(使用公钥)/解密(使用私钥)?
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
var pu = rsa.ToXmlString(false);
var pr = rsa.ToXmlString(true);
}
另外,如何使用 BouncyCastle 生成密钥?
解决方案
回答第一个问题,是的,RSA 是一个标准,它不依赖于使用的库。
其次,试试这个:
public static void GetRsaKeyPair(out string privateXml, out string publicXml)
{
CryptoApiRandomGenerator randomGenerator = new CryptoApiRandomGenerator();
SecureRandom secureRandom = new SecureRandom(randomGenerator);
var keyGenerationParameters = new KeyGenerationParameters(secureRandom, 1024);
var rsaKeyPairGenerator = new RsaKeyPairGenerator();
rsaKeyPairGenerator.Init(keyGenerationParameters);
AsymmetricCipherKeyPair rsaKeyPair = rsaKeyPairGenerator.GenerateKeyPair();
var privateRsaParameters = DotNetUtilities.ToRSAParameters((RsaPrivateCrtKeyParameters)rsaKeyPair.Private);
using (RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider())
{
rsaProvider.ImportParameters(privateRsaParameters);
privateXml = rsaProvider.ToXmlString(true);
publicXml = rsaProvider.ToXmlString(false);
}
}
推荐阅读
- java - Java:如何调用在接口中实现另一个方法的方法?
- javascript - 如何使用 useState 挂钩更新状态
- reactjs - React MUI 数据表日期范围过滤器
- python - 从 sklearn.model_selection 导入 train_test_split 时,为什么会出现错误“AttributeError:模块 'attr' 没有属性 's'”?
- angular - 如何动态创建多个行为主体并订阅?
- python - 如何从 txt 文件中的字符串填写表格 - python mechanize
- java - 如果字符串包含列表中的任何项目,JAVA 返回最长值
- javascript - 将带有文本的元素添加到 DOM 树时遇到问题
- jquery - 将 jquery 中的字符串传递给 asp.net mvc ActionResult
- r - 在不使用应用和子集函数的情况下选择具有特定条件的子数据集