gpt4 book ai didi

c# - 使用软件分发 RSA 公钥的最简单方法是什么?

转载 作者:太空狗 更新时间:2023-10-30 00:40:45 24 4
gpt4 key购买 nike

我正在开发一些与服务器交换 XML 文档的软件。服务器使用 XMLDSIG 对 XML 进行签名,客户端应在信任 XML 之前验证签名。我正在使用 RSACryptoServiceProvider 来执行此操作。 XML 已签名,但未加密。

我遵循以下解释的基本程序:
How to Sign XML Documents with Digital Signatures
How to Verify the Digital Signatures of XML Documents

这要求客户端软件有可用的公钥。我希望客户端软件的分发尽可能简单,我不希望客户端必须处理证书。上面引用的这两份文件很方便地绕过了分发公钥的主题,简单地声明用户“需要拥有相同的 key ”。我特别不希望最终用户知道他们有一个公钥,所以要求他们乱搞证书是不可能的。由于公钥是公开的,我想做的是以某种方式将其嵌入到客户端软件中。在我看来,我的选择是:

  • 在设置过程中安装公钥
  • 以某种方式将公钥嵌入软件本身,可能在 App.config 文件中

这在实践中可行吗?无需任何用户交互或意识即可实现此目的的最简单方法是什么?

最佳答案

您不必分发证书。一种常见的方法是将证书包含在签名文档中的 KeyInfo/X509Data 节点中。

验证可以轻松使用嵌入式证书,客户端唯一需要的基础结构元素是证书指纹和主题名称。换句话说,客户端使用包含的证书验证文档,然后根据主题名称和指纹轻松检查证书。如果匹配,则假设已提供正确的证书。

在我的一篇博客文章中阅读更多技术细节(这是一个由 3 部分组成的教程,因此您还可以查看所有其他条目)。无论如何,没有导入证书,也没有在您的软件中包含证书,而是您有两个字符串配置参数。

XmlDsigned 文档中的嵌入式证书具有常量大小,通常开销可以忽略不计。

http://www.wiktorzychla.com/2012/12/interoperable-xml-digital-signatures-c.html

http://www.wiktorzychla.com/2012/12/interoperable-xml-digital-signatures-c_20.html

关于c# - 使用软件分发 RSA 公钥的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24869722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com