2011-07-29 26 views
2

私は自己署名証明書(X509証明書)を生成しました。秘密鍵を使用してデジタル署名を行うためにいくつかの文書に署名したいと思います。私はC#でそれをやっています。秘密鍵をインポートしてC#で文書に署名するにはどうすればよいですか?

.pvkファイルをインポートするにはどうすればよいですか?キーストアからインポートする必要がありますか?

このコードを使用してデジタル署名に署名して作成することはできますか?

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); 
RSAPKCS1SignatureFormatter RSAFormatter = new RSAPKCS1SignatureFormatter(RSA); 
RSAFormatter.SetHashAlgorithm("SHA1"); 
RSAFormatter.SetKey(cert.PrivateKey); 
byte[] SignedHash = RSAFormatter.CreateSignature(data); 

答えて

1

このようなあなたのRSAを初期化しカントー試してみてください:私は署名がなされるべきであるどのような形式で、あなたが決定するために必要なすべてのrsa.SignData(data, "sha1");

+0

私はこのような証明書を初期化できますか? X509Certificate2 cert = new X509Certificate2(privatekeyfile、password); –

+0

はい、privatekeyfileはたとえば.pfxです –

+0

ありがとう、あなたの答えはたくさんあります –

1

まず、使用する署名を生成するには

RSACryptoServiceProvider RSA = (RSACryptoServiceProvider)cert.PrivateKey; 

。証明書を扱う場合は、PKCS#7またはCMS署名を作成する可能性が最も高いです。 .NETにはCMSシグネチャ用のクラスがあります。

次の手順は、証明書ベースのPKCS#7署名またはRSA(PKCS#1)署名が必要かどうかによって異なります。

サイドノート - いくつかの質問を1つに入れると、正しく答えることが難しくなります。また、検索を行うと、ほとんどの質問には多くの回答があります。

+0

あなたの答えをありがとう Ps。私はここでかなり新しいです、次回は1トピックにつき1つの質問をします –

関連する問題