2011-02-13 3 views
1

と私は私のマシン上のRSACryptoServiceProviderといくつかの問題を抱えています。私はすでに例外を取得問題RSACryptoServiceProvider

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); 

、CspKeyContainerInfoプロパティ下:新しいインスタンスを作成した場合

  • エクスポート可能 'がrsa.CspKeyContainerInfo.Exportable'「タイプの例外を投げたSystem.Security.Cryptography .CryptographicException」BOOL {System.Security.Cryptography.CryptographicException}

  • 基地{ "キーが存在しないた。\ r \ n"} System.SystemException {System.Security.Cryptography.CryptographicException}

私は別のPC上で同じコードをしようとすると、すべてが正常に動作します。私のPCにいくつかの設定があり、両方が正しく設定されているかどうか、設定が何をしているかを確認できますか?何が問題になるかもしれないのか?

おかげ

EDIT: それが唯一のフレームワーク4.0に起こることのように見えます。どんな手掛かり?

答えて

2

私はそれを動作させることができました。

  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

NewGuidにKeyContainerNameを設定するには、私のためのトリックを行いました。共有ありがとう! – BrandonLWhite

0

は、Windowsレジストリ内のプロバイダ・タイプを取得することができます:あなたがしたいとType値をチェックし、プロバイダのために、Microsoft \暗号化\デフォルト\プロバイダー\

ルック\ LOCAL_MACHINEの\ソフトウェア\ 。 ..

関連する問題