Да, если вы установите: cspParams.Flags = CspProviderFlags.UseDefaultKeyContainer;
, тогда контейнер ключей будет сохранен в хранилище контейнеров ключей пользователя, затем войдите в систему как другой пользователь и с помощью RSA представит вамсовершенно другое хранилище KeyContainer.
Использование этого вместо этого: cspParams.Flags = CspProviderFlags.UseMachineKeyStore = true;
Будет использовать хранилище KeyContainer локального компьютера, которое является глобальным для машины, и предоставитвы с тем же хранилищем KeyContainer, независимо от того, какой пользователь вошел в систему. Однако это относится только к этой установке Windows.Запуск вашей программы под другой установкой Windows или машиной предоставит вам другое хранилище KeyContainer.Если вы хотите расшифровать одни и те же данные на нескольких компьютерах, вам необходимо сохранить свой ключ в файле на жестком диске.Сохранение ключа в простом текстовом файле представляет огромную угрозу безопасности, поэтому, пожалуйста, зашифруйте свой ключ перед сохранением его в файл или поместите в защищенные паролем файлы .rar или что-то в этом роде.
Если у вас все еще есть проблемы, попробуйте установить: RSA.PersistKeyInCsp = true;
Это обеспечит сохранение вашего ключа в хранилище KeyContainer.Сохранение файла в KeyContainer должно быть поведением по умолчанию, если вы используете конструктор CspParameters, такой как:
CspParameters cspParams = new CspParameters ();
Другими словами Microsoft: «Эта форма CspParametersинициализирует поле ProviderType значением 24, которое указывает провайдера PROV_RSA_AES. "Источник: http://msdn.microsoft.com/en-us/library/xw9ywed4.aspx
Так что ваши комментарии в вашем коде неверны, и я могу вводить вас в заблуждение.Я бы посоветовал вам исправить их.
Я не уверен в других типах ProviderTypes и их настройках по умолчанию, касающихся сохранения ключа в хранилище KeyContainer, поэтому может потребоваться установить значение TRUE для PersistKeyInCsp в значение TRUE.
Надеюсь, это поможет.
~ Adam WhiteHat ();