2

この暗号化解除を正しく機能させるのに苦労しています。Wolfwyrd が提供するこのクラスとこの手順を使用しています。

以下はコードです:

RSACryptoServiceProvider rsaKey = EncryptionUtils.GetRSAFromSnkFile(@"c\:a.snk");

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.PreserveWhitespace = true;
xmlDoc.LoadXml("<foo />");

SignXml(xmlDoc, rsaKey); //http://msdn.microsoft.com/en-us/library/ms229745.aspx

bool result = VerifyXml(xmlDoc, rsaKey); //http://msdn.microsoft.com/en-us/library/ms229950.aspx

System.Diagnostics.Debug.Write(result); //false

戻りますfalse。注: 同じ snk ファイルと、検証しようとしている同じ暗号化された xml ドキュメントを使用しましたが、なぜ返されるのfalseでしょうか? 私は何が欠けていますか?

4

3 に答える 3

2

お二方、お返事ありがとうございます。結局、秘密鍵と公開鍵のペアを作成し、それを使用してドキュメントに署名し、公開鍵はアプリケーションに使用されました。もし私がこれを十分早く見ていたら、私はそれを使っていたかもしれませんが、他の誰かがそれが役に立つと確信しています. 再度、感謝します。

于 2009-02-07T06:19:35.003 に答える
1

良い場所です。私が引っ張ったプロジェクトの残骸が残っています。ライブラリが更新されました。

于 2009-01-30T14:46:34.957 に答える
1

Wolfwyrd のコードの GetRSAFromSnkBytes(byte[]) の実装を次のように変更してみてください。

private static RSACryptoServiceProvider GetRSAFromSnkBytes(byte[] snkBytes)
{
  if (snkBytes == null)
    throw new ArgumentNullException("snkBytes");

  RSAParameters param = GetRSAParameters(snkBytes);

  RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
  rsa.ImportParameters(param);
  return rsa;
}

彼が最初にキーを生成し、空のキー コンテナーから開始するのではなく、コンテナーに snk-key をインポートする理由がよくわかりません。

また、snk-format に煩わされる代わりに、.NET を使用してキーを生成することを検討することもできます。

例の最初の行を次のように変更すると、

RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider(1024);

コードも問題なく動作します (結果のキーを自分でシリアル化できます)。

于 2009-01-20T22:26:18.090 に答える