我想签署一个我创建的XML文件,并按照本教程进行签名:
http://msdn.microsoft.com/en-us/library/ms229745.aspx
我还阅读了有关验证文件的教程:
http://msdn.microsoft.com/en-us/library/ms229950.aspx
我能够正确编译两个没有问题,但我不明白的是,使用它我是如何生成一个XML,保证是来自而不是伪造。
我的想法(这是错误的,需要纠正):我创建了一个XML并使用这些教程中的代码对其进行签名。我也可以使用该代码验证它。没问题,它可以工作并检测我修改XML的时间。但是,其他人怎么不能只从教程中获取代码,制作自己的XML,然后自己签名,并在我的程序中使用它?验证程序不会验证吗?
答案 0 :(得分:2)
本教程使用RSA签名密钥:
signedXml.SigningKey = Key;
这link个州:
使用RSACryptoServiceProvider类生成非对称密钥。关键是 将CspParameters对象传递给时,会自动保存到密钥容器中 RSACryptoServiceProvider类的构造函数。
运行此示例并存储在本地计算机上的密钥容器中时,会创建一个新的RSA密钥。 RSA密钥包含用于签名的私钥和用于验证签名的公钥。 公钥可以分发给需要验证您签名邮件的任何人。 公钥通常使用Certificate
进行打包和分发假设您是唯一拥有私钥的人,收件人拥有公钥(假设实施是安全的),没有人可以篡改签名文件没有验证步骤检测到篡改。
运行相同示例的其他任何人都应该生成一个新的唯一RSA密钥,该密钥不能用于签署公钥将验证的文档。
答案 1 :(得分:2)
答案 2 :(得分:0)
这两个链接指的是显示验证的文章。您将从阅读非对称密钥的工作方式中受益。当您对XML进行签名时,您使用您的私钥进行签名,只有您可以访问该私钥,并且只有您的公钥可供所有人解密。没有人,但你会拥有你的私钥。