Использование ранее сгенерированного открытого / закрытого ключа RSA с платформой .net - PullRequest
4 голосов
/ 07 октября 2009

У меня уже есть пара открытых / закрытых ключей для шифрования 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

Ответы [ 2 ]

3 голосов
/ 08 октября 2009

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

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

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

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

0 голосов
/ 18 ноября 2014

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

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

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

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

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

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