在我的系统中将文档的数字签名放在何处?

时间:2011-02-22 20:28:07

标签: cryptography digital-signature

我正在开发一个存档系统,它将文档存储在数据库中,并为用户提供各种功能。我添加了一个部件来签名并验证数据库中的任何文档。但是,我坚持逻辑并想知道我应该在哪里放置签名功能 关于我的目标的提示:

  • 没有签名就不应该在数据库上上传文件
  • 如果文件未被更改,则应保留其签名
  • 如果文件不拥有签名..它应该使用上传者的签名进行签名
  • 签名不会对文件进行加密,因此在应用签名过程后仍然可以读取

    我使用的初始解决方案是将签名过程放在上传按钮调用的表单中,并将文件的签名存储在Documents表的单独列中。数据库。但是,该解决方案对我的方案无效,好像员工下载了一个文件然后再次上传,然后它将由他签名,因此原始签名将丢失。此外,签名对系统没有任何意义。
    我的主要问题:
    有没有办法将签名存储在文件中?
    提示:我的系统只处理PDF,JPEG,Tiff,MS Office和TXT文档。
    子公司要求:如果有办法将签名存储在任何类型的文件中,那将是非常棒的!

  • 2 个答案:

    答案 0 :(得分:0)

      

    有没有办法将签名存储在文档中?

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

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

    答案 1 :(得分:0)

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