是否可以在不使用KeyContainerName的情况下签署xml文档?
我想创建2个非常简单的dll:
1)将签署一个xml文档2),它将检查xml文档是否未被修改。
我尝试使用RSACryptoServiceProvider和一个密钥容器。 但是当我移动到另一台机器时,这不起作用,因为钥匙存储在机器中。
我想将密钥存储在我创建的dll中(我知道这不是推荐的)但是我无法弄清楚如何编写一些代码来简单地签署一个xml文档然后validation它没有被更改。
所以我需要使用对称密钥来做我想要的这可能吗?
皮特
您已经提到了将私钥存储在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(/*...*/);
如果要validation您的xml文档是否未被修改,则更容易实现简单的MD5校验和 (或任何其他良好的哈希算法),这正是您所需要的。 它也可以在不同的机器上validation。