2017-06-14 5 views
2

asp.net Webサイトのデータを介して署名を作成するために、秘密鍵をキーコンテナに格納する必要があります。指定された暗号化サービスプロバイダ(CSP)は、この鍵アルゴリズムをサポートしていませんキーコンテナにプライベートキーを保存する方法は?

//First I Read PrivateKey from text file that i Uploaded with FileUpload(fuPrivateKey) 
var pk = Encoding.UTF8.GetString(fuPrivateKey.FileBytes); 
CspParameters csp = new CspParameters(); 
csp.KeyContainerName = "PrivateKeyForSignature"; 
DSACryptoServiceProvider rsa = new DSACryptoServiceProvider(csp);//error 
rsa.FromXmlString(pk); 

けど

私は DSACryptoServiceProvider rsa = new DSACryptoServiceProvider(csp);のラインで次のエラーを得ました。

私はRsaCryptoServiceProviderキーを問題なく保存するためにこの方法を使用しました。しかし、私がDSAのためにそれを使用したいとき、それは動作しません。

答えて

2

私はI get this textその後、CspParametersのデフォルト(引数なし)コンストラクタを見てみた場合:

CspParametersのこの形式はPROV_RSA_AESプロバイダを指定の値にProviderTypeフィールドを初期化します。このデフォルトプロバイダーはAesアルゴリズムと互換性があります。

Iは32ビット整数I getを受け入れるコンストラクタを調べる場合:

は、指定されたプロバイダのタイプコードとCspParametersクラスの新しいインスタンスを初期化します。

...

dwTypeInパラメータにの値を渡し、DSAアルゴリズムと互換性のあるプロバイダを指定します。

右のコードで右のコンストラクタCspParametersを呼び出すと、これが解決できると思われます。

+0

くらいの義務は恵みに感謝し、:

CspParameters csp = new CspParameters(1); 

DSACryptoServiceProviderに暗号サービスを使用するには、パラメータ化コンストラクタはと呼ばれることがあります。 8つ以上のupvotesと私は[暗号化タグの上に](https://stackoverflow.com/tags/encryption/topusers):) –

1

@MaartenBodewesに記載されている基準は正しいです。 CspParametersはデフォルトでRSAコンテナに設定されています。だから、RSACryptoServiceProviderで試してみるとエラーはなかった。

CspParameters csp = new CspParameters(); 

と同じです、ちょっと

CspParameters csp = new CspParameters(13); 
関連する問題