开发者社区> nicenelly> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

PDFKit.NET 数字签名与文档处理

简介:
+关注继续查看

PDFKit.NET 2.0 是一个百分百的.net组件,用来创建以及操作PDF文档。这篇文章我将专注于它的“数字签名”功能。数字签名可以被用来认证PDF的源文件(谁签名过它)并且提供一个PDF文档的完整性(看文档在被签名过后被是否更改过)。我将展示怎样使用一个或多个数字签名技术以及怎样验证数字签名。

内容

  • 签名
  • 更新
  • 验证

签名

请看下面这个表单:

图片1:带有字段的PDF表单以及两个空的签名字段

这个表单的字段中分为两段。一段是学生信息,一段是老师信息。通常,首先由学生填写他的部分,并且签名该文档。下面的程序可以完成这个功能:



在执行上面的代码后,在PDF Reader中打开文档,看起来如下图所示:


图片2:应用第一次签名后

注意PDF 文档中的问号。这意味着该证书还没有被客户端信任,它只是简单地将证书添加到信任域中。

接下来,老师将查看到学生的数据,然后填写最终剩余的那段字段,然后给予签名。下面这段代码实现了该功能:



如果你仔细看上面这段代码。它确实与之前的这段代码很相似。唯一明显的不同是传递了一个额外的参数给Document.Write方法:DocumentWriteMode.AppendUpdate。这告诉PDFKit.Net保存所有的改变以Update模式。我将在下一节讨论它。

在执行上面的代码之后,打开PDF 阅读器,文档看起来类似下面的图片:


图片3:在应用第二次签名之后

注意:第一次签名后的图标(问号)现在已经变成了警告的惊叹号形式。它用来标识,文档在签名后已经被修改。当然这仅仅是一个例子。

更新

注意当我们保存了第二次签名,我们传递了一个额外的参数给Document.Write方法:DocumentWriteMode.AppendUpdate。它只是PDFKit.NET保存新的字段数据并且以Update的形式签名。这意味着源PDF文件是完好的,未被修改的。并且改变是连贯的。下面的图片展示了这个改变:


图片4:PDF更新

因此,第一次签名仍然有效,因为签署的确切数据并没有被修改。我们只是增加了更新。

所以,在保存完更新之后。事实上关于该文档有两个版本:一个是被学生签名过的,而另一个是老师签名过的。它对检索一个给定的应用签名的确切文件很有用。很显然签名者只关注该版本,而不是事后创建的那个版本。

给一个文档,你可以枚举出所有的更新以及文档的版本,并且在硬盘上保留一份拷贝:


但也许或者说更有趣的是,你能够打开一个签名过后的文档并且对每一个签名域都可以检索签署的更新。接下来的代码简单得枚举了所有的签名域并且保存了签署的更新:


在执行了上面的代码后,两个新的文档被存储:studentSignature.pdf 和 teacherSignature.pdf。每一个文档都展示了各自的域被签名过的版本。

验证

到现在,我们已经讨论了文档的签名。验证的功能留给了PDF Reader应用程序。但PDFKit.Net也允许你编程来验证签名。它就像下面的这段代码一样极其地简单。这个例子打开了那个被学生、老师以及枚举过签名字段的PDF文档。每一次签名、签名的状态信息都被写入了控制台。


在执行完上面这段代码,下面的图片显示了输出的结果:


译者注:

代码的实现需要两个数字证书文件,也就是两次签名的代码中的两个以”.pfx”结尾的文件。具体参见百度百科:http://baike.baidu.com/view/1128036.htm

数字签名技术主要用于标识文件的完整性,不可篡改、不可抵赖。如果A要传递给B一个文件。那么需要用A使用A的私钥加密,B使用A的公钥解密。而如果在Web系统中实现这种机制。可以把Server作为第三方认证中心。PDF的制作方、上传方类似用户A,PDF的下载方类似用户B。数字证书通常由第三方提供,也由第三方负责认证。

原文链接:http://www.codeproject.com/KB/showcase/digitalsignatures.aspx




原文发布时间为:2011-09-12


本文来自云栖社区合作伙伴CSDN博客,了解相关信息可以关注CSDN博客。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
微软:SHA-1 算法签名的.NET 框架 4 月 26 日将不再支持
微软:SHA-1 算法签名的.NET 框架 4 月 26 日将不再支持
0 0
C#, VB.NET如何加密PDF文档
在日常工作中,人们通常通过加密PDF文档的方式来保护PDF文档。不管是公司还是个人,使用PDF加密术来设置一些权限是必不可少的。为了使PDF文档既可读又不能被未授权的用户所更改,一份PDF文档往往需要两个密码:所有者密码和用户密码。
608 0
.NET破解之PDFdo转换器
无意中看到一个PDF转换器,叫PDFdo,看起了功能挺多的,于是想把它破了。 下载 官网:http://www.pdfdo.com/ 安装 安装后,只有一个exe应用程序,如果是.NET 程序应该有很多dll才对啊。
739 0
混淆和加密.NET开发工具
.NET开发的工具,可以用ILSpy等很轻松的反编译查看源码,为了保护自己写的软件,一般会对软件进行加密,不仅内部关键数据通过加密,软件开发完毕后,对软件也进行加密,防止别人很轻松的反编译和查看到比较重要的数据,我试了下Reactor混淆和加密后的dll和exe,用它很简单的混淆和加密文件后,它们不会被很轻易的破解和查看源码了。
660 0
艾伟_转载:ASP.NET Forms验证的安全性问题研究——为什么加密代码需要配置为服务
申明:这个帖子不是要你去干啥坏事,就是提醒一下你可能会遇到的安全性问题。 ASP.Net提供了内置的登录验证,最为常用的就是Forms验证。讲解如何配置的文章非常多,这里就不再讲如何配置使用这个验证的方式了。
641 0
通过FxCop来验证.NET编“.NET研究”码规范
  最近研究了fxcop,有些心得,写出来分享一下。   FxCop介绍:   FxCop是一个代码分析工具,它依照微软.NET框架的设计规范对托管代码assembly进行检查。它使用基于规则的引擎,来检查出你代码中不合规范的部分;你也可以定制自己的规则加入到这个引擎。
449 0
一起谈.NET技术,通过FxCop来验证.NET编码规范
  最近研究了fxcop,有些心得,写出来分享一下。   FxCop介绍:   FxCop是一个代码分析工具,它依照微软.NET框架的设计规范对托管代码assembly进行检查。它使用基于规则的引擎,来检查出你代码中不合规范的部分;你也可以定制自己的规则加入到这个引擎。
640 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载