2009-10-07 7 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(...) 

Как можно видеть, нет пути для указания ранее существовавший открытый/закрытый ключа.

Кто-нибудь знает, как выполнить то, что я пытаюсь сделать? Любая помощь будет высоко оценена.

Приветствие Naren

+0

Какой протокол используется для сохранения ключа? Это сертификат? –

+0

У меня просто строка для закрытого ключа, строка для открытого ключа и экспонента. – Naren

ответ

3

Чтобы использовать существующий ключ, вы можете использовать ImportParameters -метод:

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

Вы можете добавить частные параметры, также, для того, чтобы использовать его для дешифрования или подписания ,

Чтобы рассказать вам, как перейти от существующих ключей к параметрам, нам нужно точно знать, как они кодируются. Попробуйте показать нам строки (замените большую часть закрытого ключа на Xs, если это реальный ключ).

0

Я понимаю, что это очень старый вопрос, но, возможно, кто-то еще смотрит на это ...

В настоящее время вы можете получить/хранить ключи в формате XML (которые вы, возможно, могли бы в те дни, тоже).

Пример импорта:

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

Пример экспорта:

this.RSAKey_XMLString = RSA.ToXmlString(includePrivateParameters: false); 
Смежные вопросы