2009-10-07 160 views
3

我有一个预先存在的公钥/私钥对RSA加密,我需要在.net中使用。 我可以在网上找到的所有示例演示如何生成新的私有/公共对,然后加密/解密。即。像这样:使用以前生成的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(...) 

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

有人会知道如何完成我想要做的事吗? 任何帮助将不胜感激。

干杯 那仁

+0

什么协议被用来保存密钥?它是否在证书中? – 2009-10-07 01:50:30

+0

我只有一个私钥字符串,一个公钥和一个指数的字符串。 – Naren 2009-10-07 02:55:00

回答

3

要使用现有的键,你可以使用ImportParameters - 方法:

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

您可以添加私有参数,也为了用它来解密或签名。

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

0

我意识到这是一个非常古老的问题,但也许有人还在看这...

现在你可以检索/存储的XML格式键(你可能可以在天回过)。

进口为例:

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

示例出口:

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