我有一个ASP.NET MVC4应用程序,用户可以在其中生成PDF文件。此PDF文件是使用iTextSharp从HTML视图创建的。
我希望确保用户不要操纵原始PDF,以确保其安全。我还希望能够识别出任何伪造,因此在生成文档时,我将它存储在数据库上的sha1签名。
我从创建de PDF文件的方法返回的FileStreamResult创建此签名。此FileStreamResult稍后将返回到显示PDF文件的浏览器。
我的问题是,将PDF文件保存到磁盘后,该文件的sha1签名与数据库中的sha1签名不同。
另外......如果我在Firefox和Chrome中生成完全相同的文档,当我将它们保存到磁盘时都会有不同的签名。
请记住,我一次又一次地创建文档,使用相同的过程,相同的数据和相同的文件名(一旦我检查签名,我将其写下来并删除文件以尝试使用其他浏览器) 。
我怀疑浏览器' PDF插件在流中添加了某种类型的注释,对用户是不可见的,这使得每个文件与另一个文件不同(以及我在DB上存储其签名的原始FileStreamResult)。
我想知道是否有人知道可能导致此结果的其他原因,以及是否有任何方法可以在我的数据库上获得正确的签名。
对此事的任何见解都将非常感激。