精华内容
下载资源
问答
  • 以PDF格式保存的电子交易文件或合同,即使具有数字签名,仍然不能完全保证该文件的法律效力,因为数字证书存在有效期和可随时吊销的问题。为了解决这一问题,出现了一种改进的基于时间戳的数字签名方案,即在数字...

    以PDF格式保存的电子交易文件或合同,即使具有数字签名,仍然不能完全保证该文件的法律效力,因为数字证书存在有效期和可随时吊销的问题。为了解决这一问题,出现了一种改进的基于时间戳的数字签名方案,即在数字签名的基础上打上一个可信赖的时间戳。

    这篇将介绍如何使用.NET PDF组件Spire.PDF for .NET在C#应用程序中给PDF文档添加数字签名并打上时间戳(注意这里的时间戳必须符合RFC 3161标准)。

    引用DLL

    在使用以下代码前,需要引用Spire.PDF for .NET组件的DLL文件到工程中。官网可以下载最新版的DLL文件,下载地址。此外,也可以通过NuGet Package Manager搜索Spire.PDF for .NET然后点击安装。

    示例代码

    在进行签名前,需要准备以下资料:

    1)数字证书和密码;

    2)时间戳服务器的URL地址(本文使用的地址是http://timestamp.wosign.com/rfc3161);

    using System.Drawing;
    using Spire.Pdf;
    using Spire.Pdf.Graphics;
    using Spire.Pdf.Security;
    
    namespace Digitally_Sign_Pdf_with_Timestamp
    {
        class Program
        {
            static void Main(string[] args)
            {
                //加载PDF文档
                PdfDocument pdf = new PdfDocument();
                pdf.LoadFromFile("Additional.pdf");
    
                //获取第一页
                PdfPageBase page = pdf.Pages[0];
    
                //加载数字证书(.pfx文件)
                PdfCertificate cert = new PdfCertificate("test.pfx", "123");
    
                //加载一张图片
                Spire.Pdf.Graphics.PdfImage image = Spire.Pdf.Graphics.PdfImage.FromFile("Logo.jpg");
    
                //添加跟图片一样大小的签名到第一页,并设置图片为签名图片
                Spire.Pdf.Security.PdfSignature signature = new Spire.Pdf.Security.PdfSignature(page.Document, page, cert, "sign1");
                signature.Bounds = new RectangleF(new PointF(100, 300), new SizeF(image.Width, image.Height));
                signature.SignImageSource = image;
                signature.GraphicsMode = Spire.Pdf.Security.GraphicMode.SignImageAndSignDetail;
                signature.SignImageLayout = Spire.Pdf.Security.SignImageLayout.Stretch;
                signature.DocumentPermissions = Spire.Pdf.Security.PdfCertificationFlags.AllowFormFill | Spire.Pdf.Security.PdfCertificationFlags.AllowComments;
    
                //配置时间戳服务器
                string url = "http://timestamp.wosign.com/rfc3161";
                signature.ConfigureTimestamp(url);
    
                //保存文档
                pdf.SaveToFile("output.pdf");
            }
        }
    }

    效果:

     

     

     

    展开全文
  • 5.1.3 使用指定的算法和密钥库和有效期 115 5.1.4 使用非交互模式 116 5.2数字证书的显示 117 5.2.1 使用Keytool直接从密钥库显示条目信息 117 5.2.2 使用Keytool直接从密钥库显示证书详细信息 118 5.2.3 使用...
  • 有效期:推荐位的有效期,设置有效期之后,过期会取消推荐。 排序:同一城市、同一位置推荐内容的排列顺序(正序排序),有时需要将出价高的商家排列到推荐位的首位,可以通过这个排序进行控制。 4)填写完毕后...
  • 程序检测到礼物有效期还剩1天,将会自动随机送出,部分朋友包裹里可能会有贵重礼物,你可以手动关闭即将过期礼物送出功能。 需要在config.yml中,将gift项设置为false。详情见下方配置文件说明。 符号 说明 ...
  • ASP.NET精品课程+源代码

    千次下载 热门讨论 2009-01-05 20:15:51
    当整个案例的基本功能实现差不多了,就可以对案例进行扩充和扩展,例如可以学生提出这样的问题,一个网站如果再具有通信方面的功能如何实现?实际上这里就要运用网络编程的知识,紧接着就可以对网络编程方面的知识...
  • 多媒体教室

    2013-06-14 08:10:31
    教师可通过视频直播功能将实时视频信号通过网络同步传输所有学生机。 能从根本上解决跨网段教学。 多媒体网络教室由教师机、学生机、路由器软件所组成,具体功能为: 教师机:广播教学、语音教学、语音对讲、...
  • asp.net知识库

    2015-06-18 08:45:45
    体验.net2.0的优雅(3) -- 为您的 SiteMap 添加 控制转发功能 GridView控件使用经验 ASP.NET 2.0:弃用 DataGrid 吧,有新的网格控件了! ASP.NET2.0控件一览---标准控件(1) ASP.NET2.0控件一览---标准控件(2) ASP...
  • 看到网上有个方案说:主项目负责加载组件,由于主项目和组件之间是隔离的,那么主项目如何调用组件ApplicationLike的生命周期方法呢,目前采用的是基于编译字节码插入的方式,扫描所有的ApplicationLike类(其有一...
  • 在处理请求的有效期内,IIS 将经历几个状态。在每个状态下,IIS 都将引发可以使用 ISAPI 筛选器以编程方式进行处理的事件。 与 ISAPI 扩展一样,ISAPI 筛选器是在 Web 服务器上安装的非托管代码块。ISAPI 扩展被设计...
  • 有些CMS就连接触多年网站制作的Tun2都需要花上很多的时间去了解并去熟悉它的操作,更别谈如何令客户满意自己做的网站了。正是因为这些原因,Tun2开发了这套系统。Tun2企业网站管理系统比其他CMS对企业更加专一,只有...
  • 传说有天,几位Java成员组的会员正在讨论这个新的语言取什么名字,当时他们止在 咖啡馆喝着Java(爪哇)咖啡,有一个人灵机一动说就叫Java怎杵,得到了其他人的赞同, 于是,Java这个名字就这样传开了。当然对于传说,了解...
  • 它使物理网络拓朴和协议透明化,这样网络上的用户可以访问任何资源,而不需要知道资源在什么地方,或物理上它是如何连接到网络上的。% t! G+ S" E# e9 q 2 \% m) N4 I- I* v4 f. t(2)集中式管理: * [. Y& e' Q6 @,...
  • 操作系统(内存管理)

    热门讨论 2009-09-20 12:55:25
    要理解内存在程序中是如何分配的,首先需要理解如何将内存从操作系统分配程序。计算机上的每一个进程都认为自己可以访问所有的物理内存。显然,由于同时在运行多个程序,所以每个进程不可能拥有全部内存。实际上,...
  • 要理解内存在程序中是如何分配的,首先需要理解如何将内存从操作系统分配程序。计算机上的每一个进程都认为自己可以访问所有的物理内存。显然,由于同时在运行多个程序,所以每个进程不可能拥有全部内存。实际上...
  • 如果再 ➕ 个星标就更棒啦! 订阅 大家可以用 Github 提供的 RSS 来订阅我的仓库更新。 :octocat:仓库介绍 leetcode 题解,记录自己的 leetcode 解题之路。 本仓库目前分为五个部分: 第一个部分是 leetcode...
  •  本书添加了许多新示例,来解释如何使用C#完成各种任务。另外,还增加了一些全新的章节,包括LINQ、SQL、ADO.NET实体、Windows Communication Foundation、Windows Workflow Foundation、Windows Presentation ...
  • SSO-WebDemo

    2013-08-12 20:25:57
    本文除了从多个方面和角度出了对单点登录(SSO)的全面分析,还并且讨论了如何将现有的应用和SSO服务结合起来,能够帮助应用架构师和系统分析人员从本质上认识单点登录,从而更好地设计出符合需要的安全架构。...
  • c#学习笔记.txt

    热门讨论 2008-12-15 14:01:21
    尽管可能将一个点表示为类,但结构在某些方案中更有效。在一些情况下,结构的成本较低。例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。结构可以声明构造函数,但它们必须带参数。...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    17.4 异步文件操作 .227 17.5 小 结 .234 第十八章 高 级 话 题 .235 18.1 注册表编程 .235 18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 ...
  • C#微软培训资料

    2014-01-22 14:10:17
    17.4 异步文件操作 .227 17.5 小 结 .234 第十八章 高 级 话 题 .235 18.1 注册表编程 .235 18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 ...
  • 预定义类型 下表列出了预定义类型,并说明如何使用。 类型 object 说明 所有其他类型的最终 基类型 字符串类型; 字符串是 Unicode 字符序列 8 位有符号整型 16 位有符号整型 32 位有符号整型 64 位有符号整型 示例...
  • 群内热情的18级学长学姐们纷纷发扬互帮互助、乐于分享的北邮人精神,学弟学妹们分享了一些北邮考研的经验。希望能学弟学妹们提供指导,少走一些弯路。 18年电子院跨考网研院803经验分享 by 工1度 18年跨考北邮...
  • 综上所述,“认我测”在线认证检测系统,率先填补了认证检测领域移动端的空缺,提供了Web浏览器+移动端的双端访问模式,用户提供了多种访问途径,真正实现了用户和检测机构的随时随地在线下单检测。 关键词:...
  • 如果从根结点开始,按层次(每一层从左到右)用自然数1,2,……,n结点进行编号,则对于编号为k(k=1,2,……,n)的结点有以下结论: ① 若k=1,则该结点为根结点,它没有父结点;若k>1,则该结点的父结点编号...

空空如也

空空如也

1 2
收藏数 24
精华内容 9
关键字:

如何给文件添加有效期