Cryptography 在我的系统中,在哪里放置文档的数字签名?

Cryptography 在我的系统中,在哪里放置文档的数字签名?,cryptography,digital-signature,Cryptography,Digital Signature,我正在开发一个归档系统,将文档存储在数据库中,并为用户提供各种功能。我已经添加了一个部分来签名和验证数据库中的任何文档。但是,我被逻辑所束缚,不知道应该将签名功能放在哪里。 关于我目标的提示: 没有签名的文档不应上载到数据库如果文档未更改,则应保留其签名,如果文档没有签名。。应该使用上传者的签名对其进行签名签名不会加密文件,因此在应用签名过程后文件仍然可读 我使用的最初解决方案是将签名过程放在由上传按钮调用的表单中,并将文件的签名存储在数据库文档表中的单独列中。但是,对于我的场景,该解决方案被证

我正在开发一个归档系统,将文档存储在数据库中,并为用户提供各种功能。我已经添加了一个部分来签名和验证数据库中的任何文档。但是,我被逻辑所束缚,不知道应该将签名功能放在哪里。
关于我目标的提示:
  • 没有签名的文档不应上载到数据库
  • 如果文档未更改,则应保留其签名
  • ,如果文档没有签名。。应该使用上传者的签名对其进行签名
  • 签名不会加密文件,因此在应用签名过程后文件仍然可读

    我使用的最初解决方案是将签名过程放在由上传按钮调用的表单中,并将文件的签名存储在数据库文档表中的单独列中。但是,对于我的场景,该解决方案被证明是无效的,因为如果一名员工下载了一个文件,然后再次上传,那么该文件将由他签名,因此,原始签名将丢失。此外,签名在系统外也没有任何意义。
    我的主要问题:
    是否有办法将签名存储在文档中?
    提示:我的系统将只处理PDF、JPEG、Tiff、MS Office和TXT文档。
    附属请求:如果有办法将签名存储在任何类型的文件中,那就太棒了

    是否有办法将签名存储在文档中

    数字签名必须使用正在签名的文档的散列来构建。由于向文档添加签名会修改文档(这会使散列无效),因此在文档中存储数字签名没有通用的解决方案


    一些文档格式允许数字签名,并定义从散列中排除的部分,但据我所知,列出的那些格式不在其中。(虽然PGP可以用于TXT文档。)

    由于签名对文档的哈希进行签名,您只需创建一个将哈希映射到签名的表即可。因此,下载和重新上传文档不会删除现有签名,因为散列将保持不变。当然,这种方法的有用性取决于系统中签名的语义含义。

    我不理解您的要求。如果第二次上载文件,签名将如何丢失?是否将新文档与旧文档匹配?如果可以检测到它是同一个文档,那么为什么允许再次上载它?不,第一个想法是将签名与文件一起放在数据库中,并在上载文件时在后台执行签名过程。因此,假设一名员工下载了一个文件,然后再次上传,没有任何更改。它将由他的签名签署,因此原始签名现已丢失。i、 e.如果我搜索某个用户最后修改过的所有文件,前一个场景将返回不准确的结果。如果员工下载一个文件,然后再次上传,没有任何更改,那么原始文件不会仍然显示在前一个用户的搜索中吗?它是如何被替换的?如果可以替换文件,则保留原始签名是错误的,因为签名者不会批准更改。抱歉,我遗漏了一个细节,当再次上载同一文件时,它将作为以前文件的新版本上载。因此,如果我想要某个文档的最后一个版本的工作人员,我将拥有上次上传该文档的用户。我只是想知道是否有一种方法可以将签名放在文件中而不丢失它。这是我想到的最好的解决办法。我在想办法把签名放在文件的细节中。然而,我不确定这个想法有多安全。另一方面,我系统中的文档有不同的可用细节,因此我不确定这个想法的有效性!:s