gpt4 book ai didi

delphi - 使用带有 Delphi 的 MS cryptoAPI 签署文档

转载 作者:行者123 更新时间:2023-12-03 18:27:15 26 4
gpt4 key购买 nike

我试图在 Delphi 中找到一些关于如何使用 Microsoft CryptoAPI 对数据进行签名的完整示例。我在网上找到的主要是片段和伪代码,但没有关于如何执行此操作的具体示例。

据我所知,在花了一天时间寻找代码和信息后,您可以基于公钥创建文档/文件的散列(如果您自行生成一对,或者由证书提供 key 链)。然后将该散列编码到加密的输出文件(容器部分)中,并且可以由持有私钥的接收者进行验证和解码。

如果不存在 Delphi 示例,是否有任何免费的命令行程序可用于签署文件/文档?

我找到了用于 MD5/SHA1 散列的代码,还有一个使用密码字符串加密文件的代码(从动态生成的 key 参数中导出散列)。但遗憾的是没有签署流或文件。谷歌上最接近的匹配项是 Turbopower (LockBox) 的旧产品,但我不知道生成的输出是否与 MS cryptoAPI 兼容(?)

更新:这与我正在寻找的内容一致,但用 C 语言编写: http://blogs.msdn.com/b/alejacma/archive/2008/01/23/how-to-sign-and-verify-with-cryptoapi-and-a-user-certificate.aspx

此外,当您降低问题的级别时 - 请充分说明您这样做的原因。对于您在大型企业应用程序中面临的问题,对于 Delphi 而言,这是一个完全有效的问题。

最佳答案

我知道实际回答您自己的问题是不好的形式,但由于在 Delphi 下似乎很少有这方面的“动手”示例,我决定将我在这里找到的内容发布以帮助其他人。

安全、证书和签名是一个庞大而复杂的主题,需要认真研究,所以请原谅我这篇文章的简单性。它只是为了给人们指明正确的方向。

签署XML,是什么意思?

用非常简单的实践术语来说,这就是发生的事情:

  • 您生成 XML 文档的哈希值(例如 MD5,或SHA1)
  • 您使用生成的私钥加密此 HASH由您自己或由您的证书提供/派生
  • 一个新的 XML 节点(DSIG 签名)被插入到包含加密哈希(以及更多)的文档中

为了验证一个XML文档没有被篡改,读者必须使用公钥对HASH值进行解码。因此,阅读器软件必须生成同一文档的哈希值(减去附加的 XML)并将其与文档中嵌入的(解密的)值进行比较。如果这些匹配,那么我们就知道文档是完整的。并且仅当您使用有效 key 解密附加的哈希值时它才会匹配。

由于这是一项繁琐的工作(并且它包括相当多的步骤,例如在 keystore 中查找供应商 [在我的例子中] 等等)我最终从 ELDOS (SecureBlackBox) 购买了现成的 VCL 组件节省了我很多时间。

外部引用

关于delphi - 使用带有 Delphi 的 MS cryptoAPI 签署文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21645022/

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