Cosign API文档讨论了将哈希作为流缓冲区的替代方案进行签名。 我将如何获取哈希值,然后使用SAPI进行签名?
是否为业务应用程序签署了足够安全的哈希?这是一种常见的做法吗? 我问,因为发送哈希可能比发送大型文档进行签名更有效。
从我得到的答案我现在理解客户端SAPI实际上为我处理哈希并且只发送要签名的哈希。虽然SAPI Web服务更通用(可以从任何平台访问),但它确实需要通过网络发送整个文档或在调用服务之前计算哈希值。
现在,如果我使用客户端SAPI,是否足以部署DLL /程序集或是否还需要安装CoSign客户端?
答案 0 :(得分:2)
根据您要签名的文档类型,计算哈希值可能不是一件容易的事。例如,Adobe PDF格式支持在文档本身中嵌入数字签名,但为了正确地执行此操作,必须根据Adobe PDF标准以特定方式计算哈希值。
对于不支持数字签名标准的文档类型,获取整个文件的哈希更容易,可以使用任何外部加密库或工具完成。
问题是,为什么要将哈希计算过程与签名操作分开,而SAPI(CoSign Signature API)负责根据标准计算哈希值,对其进行数字签名并将其嵌入到文档中?
SAPI将始终在客户端计算机上计算文件/文档的哈希值,然后将该哈希值(以及仅哈希值)发送到CoSign服务器进行签名(并且确实是签名哈希值是一种常见做法)。这也适用于支持嵌入式签名的文档(例如PDF,XML,DOCX,XLSX等)。
话虽如此,如果您仍然只对使用SAPI签署文档哈希感兴趣,可以通过调用 BufferSignEx 函数并插入 < em> AR_SAPI_SIG_HASH_ONLY 在 标志 参数中保持不变。
答案 1 :(得分:0)
Re:是否为业务应用程序签署了足够安全的哈希值?
是的,所有标准数字签名都会签署哈希值。由于良好的哈希(例如SHA-2)表示文档的内容,并且对文档的任何更改都将更改SHA-2值,因此哈希是签名的,而不是文档。
回复:这是一种常见做法吗?
是的,这是为PDF,Word,Excel,XML以及其他任何内容创建标准数字签名的标准方法。
SAPI Windows库为您处理散列问题。如果您使用SAPI Web服务对PDF,Word或Excel进行签名,则需要发送要签名的整个文档,或者您需要在客户端处理散列。正确计算哈希是大多数文档类型的重要任务,因为哈希必须以标准方式计算,并且必须仅使用源文件中的正确数据对象。
所有内容都必须准确,因为依赖方(接收数字文档的人)将使用与您不同的软件来验证文档。散列sw的输出需要与其散列软件完全匹配。否则签名将无法验证。