Проблемы с RSACryptoServiceProvider - PullRequest
1 голос
/ 13 февраля 2011

У меня есть некоторые проблемы с RSACryptoServiceProvider на моей машине. Если создать новый экземпляр:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

Я уже получаю исключение в свойстве CspKeyContainerInfo:

  • При экспорте 'rsa.CspKeyContainerInfo.Exportable' возникло исключение типа 'System.Security.Cryptography.CryptographicException' bool {System.Security.Cryptography.CryptographicException}

  • base {"Ключ не существует. \ R \ n"} System.SystemException {System.Security.Cryptography.CryptographicException}

Если я попробую этот же код на другом ПК, все будет отлично. Есть ли на моем ПК некоторые настройки, которые я могу проверить, чтобы убедиться, что они оба настроены правильно и в чем откладывается конфигурация? Любая подсказка, в чем может быть проблема?

Спасибо

EDIT: Похоже, что это происходит только в рамках 4.0. Любая подсказка?

Ответы [ 2 ]

2 голосов
/ 13 февраля 2011

Мне удалось заставить его работать.

            CspParameters parms = new CspParameters();
            parms.Flags = CspProviderFlags.NoFlags;
            parms.KeyContainerName = Guid.NewGuid().ToString().ToUpperInvariant();
            parms.ProviderType = ((Environment.OSVersion.Version.Major > 5) || ((Environment.OSVersion.Version.Major == 5) && (Environment.OSVersion.Version.Minor >= 1))) ? 0x18 : 1;

            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(parms);

Я не знаю почему, но это так.Если кто-нибудь знает причину такого поведения, и комментарии более чем приветствуются.

Спасибо

0 голосов
/ 03 августа 2011

Вы можете получить тип провайдера в реестре Windows: \ LOCAL_MACHINE \ Software \ Microsoft \ Cryptography \ Defaults \ Provider \

Найдите нужного вам провайдера и проверьте значение типа ...

...