2009-10-07 115 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);