使用先前生成的带有.net框架的RSA公钥/私钥

我有一个预先存在的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(...) 

可以看出,没有用于指定预先存在的公钥/私钥的途径。

谁会知道如何完成我想要做的事情? 任何帮助将非常感激。

干杯纳伦

要使用现有密钥,可以使用ImportParameters -method:

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

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

为了告诉您如何从现有的keydata到参数,我们需要确切知道它们是如何编码的。 尝试向我们展示字符串(如果它是真正的密钥,则用X替换大多数私钥)。

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

现在,您可以以XML格式检索/存储密钥(您可能也可以在以后的日子里找回)。

示例导入:

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

示例导出:

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