1

私は今、これに丸一週間苦労しており、誰かが私を助けてくれることを願っています.

SHA256 と xmldsig を使用して xml に署名する必要があります。このために、SignedXML クラスを使用します。このクラスを調べると、読み込まれたキーの SignatureAlgorithm 値を使用して、使用するハッシュ タイプを決定していることがわかります。

キーをどのようにロードしても(証明書ファイルのロードを介して証明書ストアを介して)、SHA1がSignatureAlgorithmとして表示されます。MMC 証明書ストアで証明書の詳細を調べると、SHA256 が SignatureAlgorithm として表示されます。

openssl と makecert の両方を使用して SHA256 証明書キーを生成しようとしましたが、どちらも .Net で SHA1 として読み込まれます。SignatureMethod として SHA1 を使用します

.Net 4.0 は SHA256 をサポートする必要があります。

4

2 に答える 2

1

おそらく間違ったクラスを使用していたことがわかりました。

Microsoft.Web.Services.Security.SignedXml の代わりに、System.Security.Cryptography.Xml.SignedXml を使用する必要があります。後者は、使用する鍵の SignatureAlgorithm を使用して、使用するアルゴリズムを決定しません。これで、「SignedXml.SignedInfo.SignatureMethod」でアルゴリズムを自分で設定し、SHA1 キーを使用できるようになりました。

于 2013-06-21T12:03:21.617 に答える
0

オブジェクトを宣言し、KeyedHashAlgorithmSHA256 に対応する文字列を渡す必要があります (ドキュメントはこちら)。

SHA256 に対応する文字列は、HMACSHA256

次に、このオブジェクトをComputeSignatureメソッドに渡します。

コードは次のようになります。
KeyedHashAlgorithm kha = KeyedHashAlgorithm.Create("HMACSHA256"); signedXml.ComputeSignature(kha);

于 2015-06-03T12:30:46.843 に答える