是否可以在不使用KeyContainername的情况下签署XML文档?
-
12-10-2019 - |
题
我想创建2个非常简单的DLL:
1)将签署XML文档2)将检查XML文档尚未修改。
我尝试使用rsacryptoserviceprovider和一个钥匙容器。但是,当我移动到另一台机器上时,这不起作用,因为钥匙被存储在计算机中。
我想将密钥存储在dlls im创建中(我知道这不是推荐的),但是我只是无法弄清楚如何编写一些代码以简单地签署XML文档,然后验证它没有被更改。
那么,我需要使用对称键做我想做的事情吗?
皮特
解决方案
您已经提到了将私钥存储在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(/*...*/);
其他提示
如果只是要验证您的XML文档尚未修改一个简单的文档 MD5校验和 (或任何其他好的哈希算法)将更容易实施,并且是您所需要的。在不同的机器上也可以验证。
不隶属于 StackOverflow