1

我想创建 2 个非常简单的 dll:

1) 将签署 xml 文档 2) 将检查 xml 文档是否被修改。

我尝试使用 RSACryptoServiceProvider 和密钥容器。但是当我移动到另一台机器时,这不起作用,因为密钥存储在机器中。

我想将密钥存储在我正在创建的 dll 中(我知道这不是推荐的),但我无法弄清楚如何编写一些代码来简单地签署一个 xml 文档,然后验证它是否没有被更改。

那么我需要使用对称密钥来做我想做的事吗?

皮特

4

2 回答 2

9

您已经提到将私钥存储在 dll 中的问题,所以我不会重复。

做这个:

在您自己的机器上运行以下代码:

var key = new RSACryptoServiceProvider(2048);
string publicKey = key.ToXmlString(false);
string privateKey = key.ToXmlString(true);
Console.WriteLine(publicKey);
Console.WriteLine(privateKey);

这会输出两条(长)行。将它们复制到您的代码中:

符号:

var privateKey = new RSACryptoServiceProvider();
privateKey.FromXmlString(/* insert the private-key XML string here */ );
privateKey.SignData(/*...*/);

核实:

var publicKey = new RSACryptoServiceProvider();
publicKey.FromXmlString(/* insert the public-key XML string here */ );
publicKey.VerifyData(/*...*/);
于 2011-01-18T16:36:56.273 回答
1

如果只是要验证您的 xml 文档没有被修改,那么简单的MD5 校验和(或任何其他好的散列算法)会更容易实现并且是您所需要的。它也可以在不同的机器上进行验证。

于 2011-01-17T18:43:05.333 回答