34

キー ストアから引き出しRSACryptoServiceProviderた I から新しいオブジェクトを開始する最良の方法は何ですか? X509Certificate2証明書は、公開鍵 (暗号化用) と秘密鍵 (復号化用) の両方に関連付けられています。

私は現在この方法を使用してFromXmlStringいますが、もっと良い方法があるはずです。

ありがとう

4

3 に答える 3

51
RSACryptoServiceProvider publicKeyProvider = 
    (RSACryptoServiceProvider)certificate.PublicKey.Key;

RSACryptoServiceProvider privateKeyProvider = 
    (RSACryptoServiceProvider)certificate.PrivateKey;

証明書の公開鍵プロパティまたは秘密鍵プロパティのキー プロパティは、AsymmetricAlgorithm 型です。

于 2011-05-03T16:58:10.793 に答える
9

Blowdart の答えは確かに正しいです。ただし、明確にするために、RSACryptoServiceProvider インスタンスにX509 証明書の公開鍵と秘密鍵の両方を含める場合は、そのことを指摘しておく必要があります(証明書に秘密鍵があると仮定します)。証明書の HasPrivateKey プロパティを確認してください。

RSACryptoServiceProvider rsa;
if (cert.HasPrivateKey)
    rsa = (RSACryptoServiceProvider)cert.PrivateKey;
else
    rsa = (RSACryptoServiceProvider)cert.PublicKey.Key;

公開鍵のみが存在する RSA の場合、RSA パラメータは Exponent と Modulus のみになり、その他はすべて null になります。一方、秘密鍵が存在する場合、RSA パラメータには D、DP、DQ、Exponent、InverseQ、Modulus、P、および Q が含まれます。

于 2011-05-23T05:15:15.020 に答える