一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于区块链验证文件的方法、系统、装置和存储介质与流程

2021-11-05 22:56:00 来源:中国专利 TAG:


1.本技术涉及电子签名领域,特别是涉及一种基于区块链验证文件的方法、系统、装置和存储介质。


背景技术:

2.随着数字经济的发展,民事活动中的合同、单证等文书,越来越多的采用数据电文显示、交换和存储。像常见的电子发票、电子保单、电子合同、电子病历等,通常采用经过数字签名的pdf版式文件进行交付。当用户接收到签名的pdf时,可以在adobe reader中打开,并通过打开签名面板检查签名是否有效。如果是可见签名,还可通过单击签名域的可视化区域查看。从而以确保文件的完整性、确保签署人的身份、确保签署人不能否认他或她已经签署了该文件。
3.可是如果用户需要更进一步的验证签名的证书,还需要向电子认证服务提供者请求该签名的验证报告,从而判断签名的有效性。这种方式对电子认证服务提供者依赖性高,还有由于需要电子认证服务提供者出具该签名的验证报告,往往时效较低、成本较高。
4.目前针对相关技术中签署文件验证存在低时效、高成本和安全隐患的问题,尚未提出有效的解决方案。


技术实现要素:

5.本技术实施例提供了一种基于区块链验证文件的方法、系统、设备和存储介质、计算机设备和计算机可读存储介质,以至少解决相关技术中签署文件验证存在低时效、高成本和安全隐患的问题。
6.第一方面,本技术实施例中提供了一种基于区块链验证签署文件的方法,所述方法包括:
7.通过区块链响应目标交易发起的验证签署文件的请求,其中,所述目标交易中包含待验证签署文件;
8.调用部署在所述区块链上的智能合约中的合法性校验逻辑,对所述待验证签署文件进行合法性校验;
9.调用所述智能合约中的完整性检查逻辑,遍历所述待验证签署文件中的签名,检查所述待验证签署文档的完整性,其中,所述签名包括无效签名和有效签名;
10.调用所述智能合约中的签名信息检索逻辑,获取所述待验证签署文件中签名的信息,其中,所述信息包括签名域信息、摘要算法信息、签名算法信息和签名证书信息;
11.根据预设业务规则,通过所述智能合约中的签名验证逻辑对所述签名的信息进行整理构造,并返回给所述目标交易的发起方。
12.在其中一些实施例中,所述方法还包括对签名证书进行验证;
13.通过所述智能合约中的签名证书验证逻辑,创建数据证书管理对象和证书工厂对象,再根据所述数据证书管理对象构建密钥库;
14.调用所述智能合约中的签名证书验证逻辑,获取所述数据证书管理对象、所述待验证签署文件中签名的证书链和签署时间,检查所述待验证签署文件的签名证书是否存在于所述密钥库中;
15.调用所述智能合约中的签名证书验证逻辑,获取所述签名证书的颁发者信息和持有者信息,验证所述签名证书是否被吊销。
16.在其中一些实施例中,调用所述智能合约中的签名信息检索逻辑,获取所述待验证签署文件中签名的信息包括:
17.调用所述智能合约中的签名信息检索逻辑,获取所述待验证签署文件中签名的签名域信息;
18.根据所述签名域信息获取字典对象,通过所述字典对象来获取签名人所提供的信息。
19.在其中一些实施例中,在根据所述签名域信息获取字典对象之后,所述方法还包括:
20.根据所述字典对象构建签署权限对象,通过所述签署权限对象获取签名的认证级别信息、表单信息、注释信息和字段锁信息。
21.在其中一些实施例中,调用所述智能合约中的签名信息检索逻辑,获取所述待验证签署文件中签名的信息包括:
22.调用所述智能合约中的签名信息检索逻辑,获取所述待验证签署文件中签名的签署子过滤器信息、签署时间信息、签署原因信息和签署位置信息。
23.在其中一些实施例中,在根据预设业务规则,通过所述智能合约对所述签名的信息进行整理构造,并返回给所述目标交易进行签名验证之后,所述方法还包括:
24.将签名验证的相关信息存储在所述区块链的账本中,用于对所述签名验证行为进行追溯,其中,所述签名验证的相关信息包括目标交易方、发起目标交易的ip地址、发起目标交易的时间、待验证签署文件hash值和签名验证的结果信息。
25.第二方面,本技术实施例提供了一种基于区块链验证签署文件的方法,所述方法包括:
26.通过区块链响应目标交易发起的验证签署文件的请求,其中,所述目标交易中包含待验证签署文件;
27.调用所述区块链上部署的智能合约查看所述待验证签署文件中数字证书的第一摘要结果,并通过获取的签名人的身份信息组装成身份原文;
28.调用所述智能合约通过哈希算法对所述身份原文进行摘要运算,得到第二摘要结果;
29.调用所述智能合约中的判断逻辑,比较所述第一摘要结果和所述第二摘要结果的一致性,若结果一致,则表示签名人为原始签名人;若结果不一致,则表示签名人非原始签名人。
30.第三方面,本技术实施例提供了一种基于区块链验证签署文件的系统,所述系统包括接收模块、校验模块、检查模块、检索模块和验证模块;
31.所述接收模块通过区块链响应目标交易发起的验证签署文件的请求,其中,所述目标交易中包含待验证签署文件;
32.所述校验模块调用部署在所述区块链上的智能合约中的合法性校验逻辑,对所述待验证签署文件进行合法性校验;
33.所述检查模块调用所述智能合约中的完整性检查逻辑,遍历所述待验证签署文件中的签名,检查所述待验证签署文档的完整性,其中,所述签名包括无效签名和有效签名;
34.所述检索模块调用所述智能合约中的签名信息检索逻辑,获取所述待验证签署文件中签名的信息,其中,所述信息包括签名域信息、摘要算法信息、签名算法信息和签名证书信息;
35.所述验证模块根据预设业务规则,通过所述智能合约中的签名验证逻辑对所述签名的信息进行整理构造,并返回给所述目标交易的发起方。
36.第四方面,本技术实施例提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的基于区块链验证签署文件的方法。
37.第五方面,本技术实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的基于区块链验证签署文件的方法。
38.相比于相关技术,本技术实施例提供的一种基于区块链验证文件的方法、系统、装置和存储介质,通过区块链响应目标交易发起的验证签署文件的请求,其中,目标交易中包含待验证签署文件,调用部署在区块链上的智能合约中的合法性校验逻辑,对待验证签署文件进行合法性校验,调用智能合约中的完整性检查逻辑,遍历待验证签署文件中的签名,检查待验证签署文档的完整性,其中,签名包括无效签名和有效签名,调用智能合约中的签名信息检索逻辑,获取待验证签署文件中签名的信息,其中,信息包括签名域信息、摘要算法信息、签名算法信息和签名证书信息,根据预设业务规则,通过智能合约中的签名验证逻辑对签名的信息进行整理构造,并返回给目标交易的发起方,解决了签署文件验证存在低时效、高成本和安全隐患的问题,实现了用户无需手动打开软件点击相关区域查看验签,也无需因为第三方进行验签而担心文档内容被泄漏。
附图说明
39.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
40.图1是一种创建智能合约的方法示意图;
41.图2是一种调用智能合约的方法示意图;
42.图3是一种创建智能合约和调用智能合约的方法示意图;
43.图4是根据本技术实施例的基于区块链验证签署文件方法的步骤流程图;
44.图5是根据本技术实施例的另一种基于区块链验证签署文件方法的步骤流程图;
45.图6是根据本技术实施例的基于区块链验证签署文件系统的结构框图;
46.图7是根据本技术实施例的电子设备的内部结构示意图。
47.附图说明:61、接收模块;62、校验模块;63、检查模块;64、检索模块;65、验证模块。
具体实施方式
48.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对
本技术进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。基于本技术提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
49.显而易见地,下面描述中的附图仅仅是本技术的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本技术应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本技术公开的内容相关的本领域的普通技术人员而言,在本技术揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本技术公开的内容不充分。
50.在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本技术所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
51.除非另作定义,本技术所涉及的技术术语或者科学术语应当为本技术所属技术领域内具有一般技能的人士所理解的通常意义。本技术所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本技术所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本技术所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本技术所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本技术所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
52.发明人研究发现,通过adobe reader等客户端软件手工验证单份文件,很难满足标准化、信息化的发展趋势,且批量验证文件人力和时间成本巨大。而通过电子认证服务提供者所提供的第三方验签服务,通常需要将文件上传至第三方服务平台,可能导致文档信息泄漏。有鉴于此,有必要提供一种新的验证签署文件的方法,以便提供安全、便捷且低成本的验签服务。
53.本发明提供一种基于区块链验证文件的方法、系统、装置和存储介质,满足信息化发展趋势,降低用户使用成本,提高用户使用满意度。
54.区块链一般被划分为三种类型:公有链(public blockchain),私有链(private blockchain)和联盟链(consortium blockchain)。此外,还可以有上述多种类型的结合,比如私有链 联盟链、联盟链 公有链等。
55.其中,去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者(也可称为区块链中的节点)可以读取链上的数据记录、参与交易、以及竞争新区块的记账权等。而且,各节点可自由加入或者退出网络,并进行相关操作。
56.私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,其对节点具有严格限制且节点数量较少。这种类型的区块链更适合于特定机构内部使用。
57.联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;节点通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
58.基于区块链的基本特性,区块链通常是由若干个区块构成。在这些区块中分别记录有与该区块的创建时刻对应的时间戳,所有的区块严格按照区块中记录的时间戳,构成一条在时间上有序的数据链条。
59.对于物理世界产生的真实数据,可以将其构建成区块链所支持的标准的交易(transaction)格式,然后发布至区块链,由区块链中的节点设备对收到的交易进行共识处理,并在达成共识后,由区块链中作为记账节点的节点设备,将这笔交易打包进区块,在区块链中进行持久化存证。
60.其中,区块链中支持的共识算法可以包括:
61.第一类共识算法,即节点设备需要争夺每一轮的记账周期的记账权的共识算法;例如,工作量证明(proof of work,pow)、股权证明(proof of stake,pos)、委任权益证明(delegated proof of stake,dpos)等共识算法;
62.第二类共识算法,即预先为每一轮记账周期选举记账节点(不需要争夺记账权)的共识算法;例如,实用拜占庭容错(practical byzantine fault tolerance,pbft)等共识算法。
63.在采用第一类共识算法的区块链网络中,争夺记账权的节点设备,都可以在接收到交易后执行该笔交易。争夺记账权的节点设备中可能有一个节点设备在本轮争夺记账权的过程中胜出,成为记账节点。记账节点可以将收到的交易与其它交易一起打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识。
64.在采用第二类共识算法的区块链网络中,具有记账权的节点设备在本轮记账前已经商定好。因此,节点设备在接收到交易后,如果自身不是本轮的记账节点,则可以将该交易发送至记账节点。对于本轮的记账节点,在将该交易与其它交易一起打包以生成最新区块的过程中或者之前,可以执行该交易。记账节点在生成最新区块后,可以将该最新区块或者该最新区块的区块头发送至其它节点设备进行共识。
65.如上所述,无论区块链采用以上示出的哪种共识算法,本轮的记账节点都可以将接收到的交易打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识验证。如果其它节点设备接收到最新区块或者该最新区块的区块头后,经验证没有问题,可以将该最新区块追加到原有的区块链末尾,从而完成区块链的记账过程。其它节点验证记账节点发来的新的区块或区块头的过程中,也可以执行该区块中的包含的交易。
66.在区块链领域,有一个重要的概念就是账户(account);以以太坊为例,以太坊通常将账户划分为外部账户和合约账户两类;外部账户就是由用户直接控制的账户,也称之为用户账户;而合约账户则是由用户通过外部账户创建的,包含合约代码的账户(即智能合约)。当然,对于一些基于以太坊的架构而衍生出的区块链项目(比如蚂蚁区块链),还可以
对区块链支持的账户类型,进行进一步的扩展,在本说明书中不进行特别限定。
67.对于区块链中的账户而言,通常会通过一个结构体,来维护账户的账户状态。当区块中的交易被执行后,区块链中与该交易相关的账户的状态通常也会发生变化。
68.以以太坊为例,账户的结构体通常包括balance,nonce,code和storage等字段。其中:
69.balance字段,用于维护账户目前的账户余额;
70.nonce字段,用于维护该账户的交易次数;它是用于保障每笔交易能且只能被处理一次的计数器,有效避免重放攻击;
71.code字段,用于维护该账户的合约代码;在实际应用中,code字段中通常仅维护合约代码的hash值;因而,code字段通常也称之为codehash字段。
72.storage字段,用于维护该账户的存储内容(默认字段值为空);对于合约账户而言,通常会分配一个独立的存储空间,用以存储该合约账户的存储内容;该独立的存储空间通常称之为该合约账户的账户存储。合约账户的存储内容通常会构建成mpt(merklepatriciatrie)树的数据结构存储在上述独立的存储空间之中;其中,基于合约账户的存储内容构建成的mpt树,通常也称之为storage树。而storage字段通常仅维护该storage树的根节点;因此,storage字段通常也称之为storageroot字段。
73.其中,对于外部账户而言,以上示出的code字段和storage字段的字段值均为空值。
74.此外,在实际应用中,不论是公有链、私有链还是联盟链,都可能提供智能合约(smart contract)的功能。区块链上的智能合约是在区块链上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。
75.以以太坊为例,支持用户在以太坊网络中创建并调用一些复杂的逻辑。以太坊作为一个可编程区块链,其核心是以太坊虚拟机(evm),每个以太坊节点都可以运行evm。evm是一个图灵完备的虚拟机,通过它可以实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在evm上运行的。实际上,evm直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”),所以部署在区块链上的智能合约可以是字节码。
76.图1是一种创建智能合约的方法示意图,如图1所示,bob将一笔包含创建智能合约信息的交易(transaction)发送到以太坊网络后,各节点均可以在evm中执行这笔交易。其中,图中1中交易的from字段用于记录发起创建智能合约的账户的地址,交易的data字段的字段值保存的合约代码可以是字节码,交易的to字段的字段值为一个null(空)的账户。当节点间通过共识机制达成一致后,这个智能合约成功创建,后续用户可以调用这个智能合约。
77.智能合约创建后,区块链上出现一个与该智能合约对应的合约账户,并拥有一个特定的地址;比如,图1中各节点中的“0x68e12cf284
…”
就代表了创建的这个合约账户的地址;合约代码(code)和账户存储(storage)将保存在该合约账户的账户存储中。智能合约的行为由合约代码控制,而智能合约的账户存储则保存了合约的状态。换句话说,智能合约使得区块链上产生包含合约代码和账户存储的虚拟账户。
78.前述提到,包含创建智能合约的交易的data字段保存的可以是该智能合约的字节码。字节码由一连串的字节组成,每一字节可以标识一个操作。基于开发效率、可读性等多
方面考虑,开发者可以不直接书写字节码,而是选择一门高级语言编写智能合约代码。例如,高级语言可以采用诸如solidity、serpent、lll语言等。对于采用高级语言编写的智能合约代码,可以经过编译器编译,生成可以部署到区块链上的字节码。
79.以solidity语言为例,用其编写的合约代码与面向对象编程语言中的类(class)很相似,在一个合约中可以声明多种成员,包括状态变量、函数、函数修改器、事件等。状态变量是永久存储在智能合约的账户存储(storage)字段中的值,用于保存合约的状态。
80.图2是一种调用智能合约的方法示意图,如图2所示,仍以以太坊为例,bob将一笔包含调用智能合约信息的交易发送到以太坊网络后,各节点均可以在evm中执行这笔交易。其中,图2中交易的from字段用于记录发起调用智能合约的账户的地址,to字段用于记录被调用的智能合约的地址,交易的data字段用于记录调用智能合约的方法和参数。调用智能合约后,合约账户的账户状态可能改变。后续,某个客户端可以通过接入的区块链节点(例如图2中的节点1)查看合约账户的账户状态。
81.智能合约可以以规定的方式在区块链网络中每个节点独立的执行,所有执行记录和数据都保存在区块链上,所以当这样的交易执行完毕后,区块链上就保存了无法篡改、不会丢失的交易凭证。
82.图3是一种创建智能合约和调用智能合约的方法示意图,如图3所示。以太坊中要创建一个智能合约,需要经过编写智能合约、变成字节码、部署到区块链等过程。以太坊中调用智能合约,是发起一笔指向智能合约地址的交易,各个节点的evm可以分别执行该交易,将智能合约代码分布式的运行在以太坊网络中每个节点的虚拟机中。
83.本发明可在公有链、联盟链以及私有链中通过java、golang等编程语言实现。
84.本技术实施例中提供了一种基于区块链验证签署文件的方法,图4是根据本技术实施例的基于区块链验证签署文件方法的步骤流程图,该方法包括以下步骤:
85.步骤s402,通过区块链响应目标交易发起的验证签署文件的请求,其中,目标交易中包含待验证签署文件;
86.步骤s404,调用部署在区块链上的智能合约中的合法性校验逻辑,对待验证签署文件进行合法性校验;
87.步骤s406,调用智能合约中的完整性检查逻辑,遍历待验证签署文件中的签名,检查待验证签署文档的完整性,其中,签名包括无效签名和有效签名;
88.步骤s408,调用智能合约中的签名信息检索逻辑,获取待验证签署文件中签名的信息,其中,信息包括签名域信息、摘要算法信息、签名算法信息和签名证书信息;
89.步骤s410,根据预设业务规则,通过智能合约中的签名验证逻辑对签名的信息进行整理构造,并返回给目标交易的发起方。
90.具体地,在hyperledger fabric区块链上采用java语言编写智能合约,区块链响应目标交易发起的验证签署文件请求,调用部署在区块链上的智能合约中校验逻辑,对文件进行合法性校验;
91.如前述合法性校验通过,进一步调用区块链上的智能合约导入java类库itext,获取pdfreader读入对象;
92.区块链上的智能合约调用pdfreader读入对象中的getacrofields()方法,获得acrofields对象。并使用acrofields对象中得getsignaturenames()方法,遍历该文档中
可用的签名;
93.使用acrofields对象创建一个pdfpkcs7对象来使用verify()方法验证文档的完整性;
94.区块链上的智能合约使用getfieldpositions()方法获取包含签名域的页码以及该页面上代表该字段的坐标;
95.区块链上的智能合约调用pdfpkcs7对象中的gethashalgorithm()方法获取签名所使用的摘要算法,并使用getencryptionalgorithm()方法获取签名所使用的签名算法;
96.所区块链上的智能合约调用pdfpkcs7对象中的getsigningcertificate()方法并将其结果转换为x509certificate对象;
97.区块链上的智能合约根据x509certificate对象获取“cn”、“o”、“ou”等信息,其中cn是指commonname,ou是指organizationunit,o是指organizationname;
98.区块链上的智能合约根据业务规则所需,整理构造前述遍历签名所获取的信息,并将前述信息返回给发起目标交易方。
99.通过本技术实施例中的步骤s402至步骤s410,解决了签署文件验证存在低时效、高成本和安全隐患的问题,实现了用户无需手动打开软件点击相关区域查看验签,也无需因为第三方进行验签而担心文档内容被泄漏。
100.在其中一些实施例中,还包括对签名证书进行验证;
101.通过智能合约中的签名证书验证逻辑,创建数据证书管理对象和证书工厂对象,再根据数据证书管理对象构建密钥库;
102.调用智能合约中的签名证书验证逻辑,获取数据证书管理对象、待验证签署文件中签名的证书链和签署时间,检查待验证签署文件的签名证书是否存在于密钥库中;
103.调用智能合约中的签名证书验证逻辑,获取签名证书的颁发者信息和持有者信息,验证签名证书是否被吊销。
104.具体地,区块链上部署的智能合约接收证书文件以及证书别名,创建数据证书的管理工具keystore对象和证书工厂certificatefactory对象,并将前述证书文件及证书别名传入keystore对象构建密钥库;
105.区块链上部署的智能合约使用acrofields对象创建一个pdfpkcs7对象,并获取前述数据证书的管理工具keystore对象,然后调用pdfpkcs7对象中的getsigncertificatechain()方法和getsigndate()方法分别获取证书链及签署时间,再进一步调用certificateverification对象中的verifycertificates()方法并传入前述证书链信息、数据证书的管理工具keystore对象、签署时间以验证签名证书是否存在于前述密钥库中;
106.区块链上部署的智能合约使用pdfpkcs7对象获取x509certificate对象,并分别调用前述对象中的getissuerdn()方法和getsubjectdn()方法获取颁发者信息以及使用者信息。
107.区块链上部署的智能合约使用pdfpkcs7对象获取x509certificate对象,并创建basicocspresp类型集合,然后使用pdfpkcs7对象中的getocsp()获取ocsp响应,并添加至前述basicocspresp类型集合中。根据ocsp响应集合新建ocspverifier对象,调用ocspverifier对象中的verify()方法,并传入x509certificate对象和特定时间。如果
verify()方法返回列表为空,将无法使用ocsp进行验证,需要进一步查找crl。查找crl步骤如下:调用pdfpkcs7对象中getcrls()方法获取crl对象并转为x509crl对象,新建crlverifier对象,并将x509crl对象列表传入,调用crlverifier对象中verify()方法,如证书被吊销,则抛出异常,否则将给出所接受证书的检查清单。
108.在其中一些实施例中,步骤s408,调用智能合约中的签名信息检索逻辑,获取待验证签署文件中签名的信息包括:
109.调用智能合约中的签名信息检索逻辑,获取待验证签署文件中签名的签名域信息;
110.根据签名域信息获取字典对象,通过字典对象来获取签名人所提供的信息。
111.进一步地,在根据签名域信息获取字典对象之后,根据字典对象构建签署权限对象,通过签署权限对象获取签名的认证级别信息、表单信息、注释信息和字段锁信息。
112.具体地,区块链上的智能合约调用acrofields类中的getsignaturedictionary()方法并传入签名域名称以获取pdf字典对象。通过字典对象中的getasstring()方法并传入pdfname.contactinfo以获取签名人所提供的信息。并通过字典对象构建signaturepermissions签署权限对象;
113.区块链上的智能合约通过调用前述signaturepermissions对象中的iscertification()方法获取认证级别;调用isfillinallowed()方法获取是否允许添加表单;调用isannotationsallowed()方法获取是否允许添加注释;调用getfieldlocks()方法获取设置在字段的锁。
114.在其中一些实施例中,调用智能合约中的签名信息检索逻辑,获取待验证签署文件中签名的信息包括:
115.调用智能合约中的签名信息检索逻辑,获取待验证签署文件中签名的签署子过滤器信息、签署时间信息、签署原因信息和签署位置信息。
116.具体地,区块链上的智能合约调用pdfpkcs7对象中的其他方法获取签署子过滤器、签署时间、原因、位置等。
117.在其中一些实施例中,在步骤s410,根据预设业务规则,通过智能合约对签名的信息进行整理构造,并返回给目标交易进行签名验证之后,
118.将签名验证的相关信息存储在区块链的账本中,用于对签名验证行为进行追溯,其中,签名验证的相关信息包括目标交易方、发起目标交易的ip地址、发起目标交易的时间、待验证签署文件hash值和签名验证的结果信息。
119.需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
120.本技术实施例提供了一种基于区块链验证签署文件的方法,图5是根据本技术实施例的另一种基于区块链验证签署文件方法的步骤流程图,如图5所示,该方法包括以下步骤:
121.步骤s502,通过区块链响应目标交易发起的验证签署文件的请求,其中,目标交易中包含待验证签署文件;
122.步骤s504,调用区块链上部署的智能合约查看待验证签署文件中数字证书的第一
摘要结果,并通过获取的签名人的身份信息组装成身份原文;
123.步骤s506,调用智能合约通过哈希算法对身份原文进行摘要运算,得到第二摘要结果;
124.步骤s508,调用智能合约中的判断逻辑,比较第一摘要结果和第二摘要结果的一致性,若结果一致,则表示签名人为原始签名人;若结果不一致,则表示签名人非原始签名人。
125.通过本技术实施例中的步骤s502至步骤s508,解决了签署文件验证存在低时效、高成本和安全隐患的问题,实现了用户无需手动打开软件点击相关区域查看验签,也无需因为第三方进行验签而担心文档内容被泄漏。
126.需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
127.本技术实施例提供了一种基于区块链验证签署文件的系统,图6是根据本技术实施例的基于区块链验证签署文件系统的结构框图,如图6所示,该系统包括接收模块61、校验模块62、检查模块63、检索模块64和验证模块65;
128.接收模块61通过区块链响应目标交易发起的验证签署文件的请求,其中,目标交易中包含待验证签署文件;
129.校验模块62调用部署在区块链上的智能合约中的合法性校验逻辑,对待验证签署文件进行合法性校验;
130.检查模块63调用智能合约中的完整性检查逻辑,遍历待验证签署文件中的签名,检查待验证签署文档的完整性,其中,签名包括无效签名和有效签名;
131.检索模块64调用智能合约中的签名信息检索逻辑,获取待验证签署文件中签名的信息,其中,信息包括签名域信息、摘要算法信息、签名算法信息和签名证书信息;
132.验证模块65根据预设业务规则,通过智能合约中的签名验证逻辑对签名的信息进行整理构造,并返回给目标交易的发起方。
133.通过本技术实施例,接收模块61通过区块链响应目标交易发起的验证签署文件的请求,其中,目标交易中包含待验证签署文件,校验模块62调用部署在区块链上的智能合约中的合法性校验逻辑,对待验证签署文件进行合法性校验,检查模块63调用智能合约中的完整性检查逻辑,遍历待验证签署文件中的签名,检查待验证签署文档的完整性,其中,签名包括无效签名和有效签名,检索模块64调用智能合约中的签名信息检索逻辑,获取待验证签署文件中签名的信息,其中,信息包括签名域信息、摘要算法信息、签名算法信息和签名证书信息,验证模块65根据预设业务规则,通过智能合约中的签名验证逻辑对签名的信息进行整理构造,并返回给目标交易的发起方,解决了签署文件验证存在低时效、高成本和安全隐患的问题,实现了用户无需手动打开软件点击相关区域查看验签,也无需因为第三方进行验签而担心文档内容被泄漏。
134.需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
135.本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
136.可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
137.需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
138.另外,结合上述实施例中的基于区块链验证签署文件的方法,本技术实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种基于区块链验证签署文件的方法。
139.在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于区块链验证签署文件的方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
140.在一个实施例中,图7是根据本技术实施例的电子设备的内部结构示意图,如图7所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图7所示。该电子设备包括通过内部总线连接的处理器、网络接口、内存储器和非易失性存储器,其中,该非易失性存储器存储有操作系统、计算机程序和数据库。处理器用于提供计算和控制能力,网络接口用于与外部的终端通过网络连接通信,内存储器用于为操作系统和计算机程序的运行提供环境,计算机程序被处理器执行时以实现一种基于区块链验证签署文件的方法,数据库用于存储数据。
141.本领域技术人员可以理解,图7中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
142.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
143.本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组
合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
144.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献