Размер ключа в RSA C # не меняется! - PullRequest
3 голосов
/ 19 февраля 2011

Я генерирую пару ключей и сохраняю их в XML-файле, используя

ToXmlString(true);

Мне нужно установить размер ключа на 2048 в соответствии с MSDN единственное место, где это можно сделать, - это конструктор RSACryptoServiceProvider

    private void AssignParameter(ProviderType providerType)
    {
        CspParameters cspParams;

        cspParams = new CspParameters((int)providerType);
        cspParams.KeyContainerName = RSAEncryption.containerName;
        cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
        cspParams.ProviderName = "Microsoft Strong Cryptographic Provider";
        cspParams.KeyNumber = (int)KeyNumber.Exchange;

        this.rsa = new RSACryptoServiceProvider(2048, cspParams);
    }

когда я проверяю размер ключа с помощью

int x = this.rsa.KeySize;

Я всегда получаю 1024 так что тут не так ??

Ответы [ 2 ]

3 голосов
/ 29 марта 2012

Я видел это раньше, попробуйте изменить имя контейнера или попробуйте

using (this.rsa = new RSACryptoServiceProvider(2048, cspParams)) 
{

}

или this.rsa.Clear(); после того, как вы закончите с ним.я думаю, что он будет использовать контейнер снова.

0 голосов
/ 27 марта 2016

Сначала необходимо очистить существующий контейнер следующим образом:

rsa.PersistKeyInCsp = false;
rsa.Clear();

Затем он должен работать с вами.Не забудьте установить:

rsa.PersistKeyInCsp = true;
...