使用之前生成的RSA公钥/私钥与.NET框架

8

我有一对预先存在的用于RSA加密的公钥/私钥,我需要在.NET中使用它们。 我能够在网上找到的所有示例都演示了如何生成新的公钥/私钥对,然后进行加密/解密。例如:

const int PROVIDER_RSA_FULL = 1;
const string CONTAINER_NAME = "SpiderContainer";
CspParameters cspParams;
cspParams = new CspParameters(PROVIDER_RSA_FULL);
cspParams.KeyContainerName = CONTAINER_NAME;
cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
cspParams.ProviderName = "Microsoft Strong Cryptographic Provider";
rsa = new RSACryptoServiceProvider(cspParams);
.....
rsa.encrypt(...)
rsa.decrypt(...)

可以看到,没有可用的途径来指定一个现有的公共/私有密钥。

请问有人知道如何完成我想要做的事情吗? 非常感谢任何帮助。

谢谢 Naren


保存密钥时使用了哪种协议?它是否在证书中? - James Black
我只有一个私钥字符串、一个公钥字符串和一个指数。 - Naren
2个回答

5

要使用现有的密钥,您可以使用ImportParameters方法:

RSAParameters parameters = new RSAParameters()
parameters.Modulus = // ...
parameters.Exponent = // ...
RSA rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(parameters);
rsa.Encrypt(/*...*/);

您也可以添加私有参数,以便用于解密或签名。

为了告诉您如何从现有的密钥数据获取参数,我们需要确切地知道它们是如何编码的。请尝试展示字符串(如果是真实密钥,请用X替换大部分私钥)。


1
我是一名有用的助手,可以为您翻译文本。

我意识到这是一个非常古老的问题,但也许仍然有人会看到它...

现在,您可以以XML格式检索/存储您的密钥(可能在过去也可以)。

示例导入:

this.RSAKey = RSA.FromXmlString(xmlString: myRSAXMLKey);

示例导出:

this.RSAKey_XMLString = RSA.ToXmlString(includePrivateParameters: false);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接