2016-12-12 21 views
0

私はこのためにRSACryptoServiceProviderRSACryptoServiceProvider公開/秘密鍵のインポート

を経由してデータに署名し、確認したい、私は公開鍵と秘密鍵を必要とします。

私のプロジェクトでは、MyPublicとPrivateキーをXMLファイルに保存します。

ある時は、私がMyPublicとプライベートキーの上で

public bool SignutureCheckForVerify(string myData, byte[] SignedData) 
    { 
     ... 

     RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(); 
      RSAalg.FromXmlString(MyPublicKey()); 
     return RSAalg.VerifyData(Encoding.ASCII.GetBytes(myData), new MineCryptoService(), SignedData); 

     ... 

    } 

    private static string MyPublicKey() 
    { 
     return "<RSAKeyValue><Modulus>-----Pubic Key Here ----</RSAKeyValue>"; 
    } 

を生成し、私は

を「データを介して公開鍵を確認し、」マイSignData方法が類似していることを示しました。そこで

RSAalg.FromXmlString(GetPrivateKey()); 
    ... 
    RSAalg.SignData(...) 

私の質問のSIいます。いくつかの例では、私はそれを認識しました。公開鍵と秘密鍵は、crt/pem/certなどの証明書ファイルを使用してインポートします。そこに私はXMLファイルを保存しました。

©私のソリューションは間違っていますか?

Iキー

https://msdn.microsoft.com/en-us/library/tswxhw92(v=vs.110).aspx

GetKeyFromContainer( "MyKeyContainer")をインポートするためにこの方法を使用する場合

、ことを2番目の質問。

IS MyKeyContainerプライベートキーと公開キーは静的ですか?各実行時

は、私は別のキーセットを持っている同じ秘密鍵/公開鍵

または各ランニングを持つことができますか? テキストを強調

答えて

0

私のソリューションは間違っていますか?

要件と脅威モデルによって異なります。 RSACryptoServiceProviderの署名生成は、MD5またはSHA-1以外のハッシュに明示的に設定する必要があります。これが起こったのかどうかはあなたの疑問からは分かりません。

私はキー

https://msdn.microsoft.com/en-us/library/tswxhw92(v=vs.110).aspx

GetKeyFromContainer("MyKeyContainer");

をインポートするには、この方法を使用する場合、静的MyKeyContainer秘密鍵と公開鍵ですか?

はい、それはとにかくキーストアを使用するという一般的な考えです。

各実行時に、私は同じ秘密鍵/公開鍵を使用できますか?または、署名を生成するたびに別の鍵を設定する必要がありますか?

はい、十分なキーサイズ、たとえば2048ビット以上を使用することができます。

信頼公開鍵に受信者のニーズを確保するためのソリューションのために実際に

、。信頼が確立されていない場合、誰でもあなたの公開鍵を送ることができます。

+0

あなたの答えはたくさんあります。キーを格納するXMLファイルにはどうしたらいいですか?また、XMLのStoregeと証明書ファイルのStoregeの違いは何ですか?手伝って頂けますか? –

+0

XMLは、Microsoft独自のストレージとして使用されます。証明書に公開鍵を格納すると、証明書に追加データを格納することができます。証明書は、秘密鍵で「自己署名」することも、PKIを作成できる認証局(PGPの場合は「誰でも」)が署名することもできます。主題「鍵管理」は巨大であることに注意してください。 StackOverflowを超えて、すべてのオプションと特定の選択肢の意味を議論します。 –

+0

@MaartenBodewes RSACryptoServiceProviderはアルゴリズムとして引数を必要としますが、SHA-1のデフォルトはどういう意味ですか? (これはOAEPのSHA-1のみをサポートしますが、それは署名ではなく暗号化です)。 – bartonjs

関連する問題