一种PDF文档多人并行电子签章的生成方法与流程


一种pdf文档多人并行电子签章的生成方法
技术领域
1.本发明属于电子签章技术领域,具体涉及到一种pdf文档多人并行电子签章的生成方法。


背景技术:



2.pdf格式的文档,是目前办公中使用比较频繁的文档之一,然而与此同时,它也是 windows系统中不太友好的文档之一,因为它被定义为不可修改的文档格式,而windows 系统也确实无法直接修改它,所以很多时候,我们要处理pdf文档不管是编辑还是签章,通常都需要额外获取第三方的工具。
3.pdf电子签章利用图像处理技术,将电子签名操作转化为与纸质文档盖章操作相同的可视效果,同时利用电子签名技术表示签章者同意电子文档所陈述事实的内容,可用于验证pdf文档签章者身份的真实性、保证文档内容的完整性、文档签章行为的不可否认性。 pdf电子签章由签章外观、签名运算两部分组成,签章外观由签名域对象来描述,签名运算由签名值对象来描述,签名域对象参考图2,签名值对象参考图3。
4.现有的pdf签章技术中,签章字典中的byterange取值范围是除电子签章值本身 (contents条目)之外的整个文档,包括签章字典。也就是说一个已签章的pdf中,除了原文,就是电子签名值本身;对pdf文档的任何一个字节的变动都会造成签名验证失败,因此,现有技术的多人签章方式只能使用串行的方式,一个人签完之后流转给另外一个人签,由于多人联合签署盖章的过程中,很多时候参与方人数比较多,传统串行签章的方式效率低下。另外,签章文档在流转过程中人为破坏签章pdf文档,而导致了所有人需要重新对文档进行签章,因此,本发明提供一种pdf文档多人并行电子签章的生成方法。


技术实现要素:



5.针对上述问题,本发明的主要目的在于设计一种pdf文档多人并行电子签章的生成方法,解决pdf文档多人同时进行电子签章时,其他某个人签章出错破坏了文档结构时,需要所有人重新签的问题,和因需要重新签章造成的多人签章效率低的问题。
6.为了实现上述目的本发明采用如下技术方案:
7.一种pdf文档多人并行电子签章的生成方法,包括签章、合章、验章三部分;
8.签章部分:将待签章的pdf文档分发给每个用户,用户使用自己的电子印章、数字证书以及对应的私钥对pdf文档进行签章,具体包括如下操作步骤
9.步骤s01:获取签章位置、签章页码、电子印章数据;
10.步骤s02:加载待签章的pdf文档数据,解析pdf文档;
11.步骤s03:根据电子印章数据生成签章外观对象;
12.步骤s04:生成签名值对象;
13.所述的签名值对象包括type、filter、subfilter、contents、byterange,byterange是一个数组对象,包括四个元素:byterange[0]、byterange[1]、byterange[2]、
byterange[3],数组元素0和2表示签章完整性保护开始的字节偏移量,数组元素1和3 表示长度;
[0014]
步骤s05:根据步骤s03和s04生成的对象,组装签名域对象;
[0015]
所述的签名域对象包括type、subtype、rect、p、ap、v等元素,其中ap引用s03 生成的签章外观对象,v引用s04生成的签名值对象;
[0016]
步骤s06:根据pdf增量更新的方式,将签名域对象等信息以增量更新方式添加到pdf 文档;
[0017]
步骤s07:调整签名值byterange四个元素的值,byterange[0]的值为0,byterange[1] 的值为原文档的数据长度,byterange[2]的值为增量更新后文件末尾“%%eof”的字节偏移量,byterange[3]的值为5,其值固定为“%%eof”字符串的长度;
[0018]
步骤s08:输出带签章的pdf文档。
[0019]
合章部分:收集所有用户签章的pdf文档,将所有的带签章的pdf文档中签章数据合并到原pdf文档中,最终得到一份携带了所有用户签章的pdf文档,具体包括如下操作步骤:
[0020]
步骤s01:遍历解析所有带签章的pdf文档,获取签名域的相关对象,对每个解析出的签名域对象信息均进行步骤s02、步骤s03的处理;
[0021]
步骤s02:将步骤s01得到的签名域对象持续增量更新到原pdf文档;
[0022]
步骤s03:调整签名值对象的byterange的值,将byterange[2]的值设置为增量更新后的文件末尾“%%eof”在pdf文档流中的字节偏移量;
[0023]
步骤s04:输出带有所有用户签章的pdf文档;
[0024]
验章部分:用户使用已签章的pdf文档前,需要对pdf文档进行完整性验证,防止篡改,需要对电子签章的文档进行验证,并提示验证结果,具体包括如下操作步骤:
[0025]
步骤s01:加载待签章的pdf文档数据,解析pdf文档的签名域信息;
[0026]
步骤s02:遍历所有的签名域信息,对所有的签名域信息进行执行步骤s03-步骤s05 的处理;
[0027]
步骤s03:获取签名域的签名值对象,获取签名值对象的content字段和byterange字段,按照pdf签名验证标准验证签名,如果验证失败,输出文档被篡改;
[0028]
步骤s04:获取签名值content字段的签名结果的验证签章json数据;
[0029]
步骤s05:获取签名域的p字段,ap字段,rect字段,计算ap字段图片外观流对象内容的杂凑值,解析json对象,对比json对象设置的签章的位置,签章的页码、签章的图片外观流对象是否一致,如果不一致,输出文档被篡改;
[0030]
步骤s06:s03-s05的步骤验证都正常,输出验证电子签章正常,未被篡改。
[0031]
作为本发明进一步的描述,签章部分步骤s03中,所述生成签章外观对象,具体为:
[0032]
步骤s31:从电子印章数据中解析印章图片数据以及图片尺寸,如果《gm/t 0031-2014 安全电子签章密码技术规范》、《gb/t 38540-2020信息安全技术安全电子签章密码技术规范》中定义的电子印章格式,按照标准规范解析出印章图片数据;
[0033]
步骤s32:利用步骤s31中的印章图片数据生成签章外观流对象。
[0034]
作为本发明进一步的描述,签章部分步骤s04中,所述生成签章值对象,具体为:
[0035]
步骤s41:根据待签章的pdf文档,确定pdf电子签章的保护范围,设置签名值对象
中的byterange数组元素的值:byterange[0]的值设置为0,byterange[1]的值为pdf文档的长度,byterange[2]的值设置为0000000000,在签章部分步骤s06完成后回填 byterange[2]元素的值,byterange[3]元素的值设置为5,其值固定为“%%eof”字符串的长度;
[0036]
步骤s42:将签章的位置,签章的页码、签章的图片外观流对象内容的杂凑值组装成验证签章的json格式数据;
[0037]
步骤s43:使用数字证书及其对应的私钥对保护的数据进行数字签章,签章的数据为原文档数据和末尾的%%eof字符拼接的数据,将s42步骤的验证签章json格式数据作为签名保护的内容的一部分,运算出数字签章结果,再将签名值对象的content内容设置为数字签章的结果。
[0038]
作为本发明进一步的描述,签章部分步骤s43中,生成的签名值的格式包括多种符合电子签章定义的格式;
[0039]
生成签名值的格式可以是符合rfc5652标准的signeddata格式,也可以是符合《gm/t 0031-2014安全电子签章密码技术规范》、《gb/t 38540-2020信息安全技术安全电子签章密码技术规范》中定义的电子签章格式。
[0040]
如果是signeddata格式,增加一个保护的签名属性,签名属性的内容为步骤s42生成的json格式数据;如果《gm/t 0031-2014安全电子签章密码技术规范》、《gb/t 38540-2020信息安全技术安全电子签章密码技术规范》中定义的电子签章格式,设置电子签章的property字段的内容为步骤s42生成的验证签章json格式数据。
[0041]
相对于现有技术,本发明的技术效果为:
[0042]
本发明提供了一种pdf文档多人并行电子签章的生成方法,通过签章部分、合章部分和验章部分的配合,可以支持多人同时的、并行的对同一份pdf文档进行签章,无需等待上一个人签章完成后才到下一个人签章,而且其他某个人签章出错破坏了pdf文档结构时,不需要所有人重新签,并且也能够提供签章文档的完整性保护功能,从而大大提高了多人共同签章场景的办公效率和可用性,可广泛应用在会议纪要、会议决议、专家评标报告签署等场景。
附图说明
[0043]
图1为本发明的实施的流程示意图;
[0044]
图2为本发明的签名域对象参数示意图;
[0045]
图3为本发明的签名值对象参数示意图;
[0046]
图4为本发明的现有的电子签章与并行电子签章生成方法对比示意图。
具体实施方式
[0047]
下面结合附图对本发明进行详细描述:
[0048]
pdf电子签章由签章外观、签名运算两部分组成,签章外观由签名域对象来描述,签名运算由签名值对象来描述,签名域对象参考图2,签名值对象参考图3。
[0049]
所述的签名域对象包括type、subtype、rect、p、ap、v等元素,其中ap引用s03 生成的签章外观对象,v引用s04生成的签名值对象。
[0050]
所述的签名值对象包括type、filter、subfilter、contents、byterange,
byterange 值是一个数组对象,包括四个元素:byterange[0]、byterange[1]、byterange[2]、 byterange[3],数组元素0和2表示签章完整性保护开始的字节偏移量,数组元素1和3 表示长度。
[0051]
本发明公开的一种pdf文档多人并行电子签章的生成方法,参考图1-4所示,包括签章、合章、验章三部分:
[0052]
一、签章部分:将待签章的pdf文档分发给每个用户,用户使用自己的电子印章、数字证书以及对应的私钥对pdf文档进行签章,包括步骤s01-s08,具体操作步骤如下:
[0053]
步骤s01:获取签章位置、签章页码、电子印章数据。
[0054]
步骤s02:加载待签章的pdf文档数据流,解析pdf文档。
[0055]
步骤s03:根据电子印章数据生成签章外观对象,具体为:
[0056]
步骤s31:从电子印章数据中解析印章图片数据以及图片尺寸;
[0057]
注:印章图片数据格式可以是工业标准格式的图像数据,也可以是《gm/t 0031-2014 安全电子签章密码技术规范》、《gb/t 38540-2020信息安全技术安全电子签章密码技术规范》中定义的电子印章格式。
[0058]
步骤s32:利用步骤s31中的印章图片数据生成签章外观流对象。
[0059]
步骤s04:生成签名值对象,具体为:
[0060]
步骤s41:根据待签章的pdf文档,确定pdf电子签章的保护范围,设置签名值对象中的byterange数组元素的值:byterange[0]的值设置为0,byterange[1]的值为pdf文档的长度,byterange[2]的值设置为0000000000,在签章部分步骤s06完成后回填 byterange[2]元素的值,byterange[3]元素的值设置为5,其值固定为“%%eof”字符串的长度。
[0061]
步骤s42:将签章的位置,签章的页码、签章的图片外观流对象内容的杂凑值组装成验证签章的json格式数据。
[0062]
步骤s43:使用数字证书及其对应的私钥对保护的数据进行数字签章,签章的数据为原文档数据和末尾的%%eof字符拼接的数据,将s42步骤的验证签章json格式数据作为签名保护的内容的一部分,运算出数字签章结果,再将签名值对象的content内容设置为数字签章的结果。
[0063]
签章部分步骤s43中,生成的签名值的格式包括多种符合电子签章定义的格式;生成签名值的格式可以是符合rfc5652标准的signeddata格式,也可以是符合《gm/t 0031-2014安全电子签章密码技术规范》、《gb/t 38540-2020信息安全技术安全电子签章密码技术规范》中定义的电子签章格式。
[0064]
如果是signeddata格式,增加一个保护的签名属性,签名属性的内容为步骤s42生成的json格式数据;如果《gm/t 0031-2014安全电子签章密码技术规范》、《gb/t 38540-2020信息安全技术安全电子签章密码技术规范》中定义的电子签章格式,设置电子签章的property字段的内容为步骤s42生成的验证签章json格式数据。
[0065]
生成的验证签章json格式数据目的由于数字签章只保护原文档内容,没有保护签名域部分的内容,为了能验证签章的位置、页码和印章图片不被篡改,需要将签名域属性信息作为签章一部分进行保护。
[0066]
步骤s05:根据步骤s03和s04生成的对象,组装签名域对象。
[0067]
步骤s06:根据pdf增量更新的方式,将签名域对象等信息追加更新到pdf文档。
[0068]
步骤s07:调整签名值byterange四个元素的值,byterange[0]的值为0,byterange[1] 的值为原文档的数据长度,byterange[2]的值为增量更新后文件末尾“%%eof”的字节偏移量,byterange[3]的值为5,其值固定为字符串“%%eof”的长度。
[0069]
步骤s08:输出带签章的pdf文档。
[0070]
通过上述签章部分的步骤s01-步骤s08,实现了单独的每个用户使用自己的电子印章、数字证书以及对应的私钥对pdf文档进行签章。
[0071]
二、合章部分:收集所有用户签章的pdf文档,将所有的带签章的pdf文档中签章数据合并到原pdf文档中,最终得到一份携带了所有用户签章的pdf文档,包括步骤s01-s04,具体操作步骤如下:
[0072]
步骤s01:遍历解析所有带签章的pdf文档,获取签名域的相关对象,对每个解析出的签名域对象信息均进行步骤s02、步骤s03的处理。
[0073]
步骤s02:将步骤s01得到的签名域对象持续增量更新到原pdf文档。
[0074]
步骤s03:调整签名值对象的byterange的值,将byterange[2]的值设置为增量更新后的文件末尾“%%eof”在pdf文档流中的字节偏移量。
[0075]
步骤s04:输出带有所有用户签章的pdf文档。
[0076]
通过上述合章部分的步骤s01-s04,实现了多个用户签章后的pdf文档合并。
[0077]
三、验章部分:
[0078]
验章部分:用户使用已签章的pdf文档前,需要对pdf文档进行完整性验证,防止篡改,需要对电子签章的文档进行验证,并提示验证结果,包括步骤s01-s06,具体操作步骤如下:
[0079]
步骤s01:加载待签章的pdf文档数据,解析pdf文档的签名域信息。
[0080]
步骤s02:遍历所有的签名域信息,对所有的签名域信息进行执行步骤s03-步骤s05 的处理。
[0081]
步骤s03:获取签名域的签名值对象,获取签名值对象的content字段和byterange 字段,按照pdf签名验证标准验证签名,如果验证失败,输出文档被篡改。
[0082]
步骤s04:获取签名值content字段的签名结果的验证签章json数据。
[0083]
步骤s05:获取签名域的p字段,ap字段,rect字段,计算ap字段图片外观流对象内容的杂凑值,解析json对象,对比json对象设置的签章的位置,签章的页码、签章的图片外观流对象是否一致,如果不一致,输出文档被篡改。
[0084]
步骤s06:s03-s05的步骤验证都正常,输出验证电子签章正常,未被篡改。
[0085]
通过上述验章部分的步骤s01-s06,实现了并行签章pdf的完整性验证。
[0086]
本发明提供的一种pdf文档多人并行电子签章的生成方法,通过签章部分、合章部分和验章部分的配合,在pdf文档的签章过程中,可以支持多人同时的、并行的对同一份pdf 文档进行签章,无需等待上一个人签章完成后才到下一个人签章,而且其他某个人签章出错破坏了pdf文档结构时,不需要所有人重新签,并且也能够提供签章文档的完整性保护效果,从而大大提高了多人共同签章场景的办公效率和可用性,可广泛应用在会议纪要、会议决议、专家评标报告签署等场景。
[0087]
以上实施例仅用以说明本发明的技术方案而非限制,本领域普通技术人员对本发明的技术方案所做的其他修改或者等同替换,只要不脱离本发明技术方案的精神和范围,
均应涵盖在本发明的权利要求范围当中。

技术特征:


1.一种pdf文档多人并行电子签章的生成方法,其特征在于:包括签章、合章、验章三部分;签章部分具体包括如下操作步骤:步骤s01:获取签章位置、签章页码、电子印章数据;步骤s02:加载待签章的pdf文档数据,解析pdf文档;步骤s03:根据电子印章数据生成签章外观对象;步骤s04:生成签名值对象;所述的签名值对象包括type、filter、subfilter、contents、byterange,byterange是一个数组对象,包括四个元素:byterange[0]、byterange[1]、byterange[2]、byterange[3],数组元素0和2表示签章完整性保护开始的字节偏移量,数组元素1和3表示长度;步骤s05:根据步骤s03和s04生成的对象,组装签名域对象;所述的签名域对象包括type、subtype、rect、p、ap、v等元素,其中ap引用s03生成的签章外观对象,v引用s04生成的签名值对象;步骤s06:根据pdf增量更新的方式,将签名域对象等信息以增量更新方式添加到pdf文档;步骤s07:调整签名值byterange四个元素的值,byterange[0]的值为0,byterange[1]的值为原文档的数据长度,byterange[2]的值为增量更新后文件末尾“%%eof”的字节偏移量,byterange[3]的值为5,其值固定为“%%eof”字符串的长度;步骤s08:输出带签章的pdf文档;合章部分具体包括如下操作步骤:步骤s01:遍历解析所有带签章的pdf文档,获取签名域的相关对象,对每个解析出的签名域对象信息均进行步骤s02、步骤s03的处理;步骤s02:将步骤s01得到的签名域对象持续增量更新到原pdf文档;步骤s03:调整签名值对象的byterange的值,将byterange[2]的值设置为增量更新后的文件末尾“%%eof”在pdf文档流中的字节偏移量;步骤s04:输出带有所有用户签章的pdf文档;验章部分具体包括如下操作步骤:步骤s01:加载待签章的pdf文档数据,解析pdf文档的签名域信息;步骤s02:遍历所有的签名域信息,对所有的签名域信息进行执行步骤s03-步骤s05的处理;步骤s03:获取签名域的签名值对象,获取签名值对象的content字段和byterange字段,按照pdf签名验证标准验证签名,如果验证失败,输出文档被篡改;步骤s04:获取签名值content字段的签名结果的验证签章json数据;步骤s05: 获取签名域的p字段,ap字段,rect字段,计算ap字段图片外观流对象内容的杂凑值,解析json对象,对比json对象设置的签章的位置,签章的页码、签章的图片外观流对象是否一致,如果不一致,输出文档被篡改;步骤s06:s03-s05的步骤验证都正常,输出验证电子签章正常,未被篡改。2.根据权利要求1所述的一种pdf文档多人并行电子签章的生成方法,其特征在于:签章部分步骤s03中,所述生成签章外观对象,具体为:
步骤s31:从电子印章数据中解析印章图片数据以及图片尺寸;步骤s32:利用步骤s31中的印章图片数据生成签章外观流对象。3.根据权利要求1所述的一种pdf文档多人并行电子签章的生成方法,其特征在于:签章部分步骤s04中,所述生成签名值对象,具体为:步骤s41:根据待签章的pdf文档,确定pdf电子签章的保护范围,设置签名值对象中的byterange数组元素的值:byterange[0]的值设置为0,byterange[1]的值为pdf文档的长度,byterange[2]的值设置为0000000000,在签章部分步骤s06完成后回填byterange[2]元素的值,byterange[3]元素的值设置为5,其值固定为“%%eof”字符串的长度;步骤s42:将签章的位置,签章的页码、签章的图片外观流对象内容的杂凑值组装成验证签章的json格式数据;步骤s43:使用数字证书及其对应的私钥对保护的数据进行数字签章,签章的数据为原文档数据和末尾的%%eof字符拼接的数据,将s42步骤的验证签章json格式数据作为签名保护的内容的一部分,运算出数字签章结果,再将签名值对象的content内容设置为数字签章的结果。4.根据权利要求3所述的一种pdf文档多人并行电子签章的生成方法,其特征在于:签章部分步骤s43中,生成的签名值的格式包括多种符合电子签章定义的格式。

技术总结


本发明公开一种PDF文档多人并行电子签章的生成方法,广泛应用在会议纪要、会议决议、专家评标报告签署等场景,包括签章、合章、验章三部分,签章部分:将待签章的PDF文档分发给每个用户,用户分别对PDF文档签章;合章部分:收集已签章的PDF文档,并将签章数据合并到原PDF文档中,得到带了所有用户签章的PDF文档;验章部分:用户使用已签章的PDF文档前,对文档进行完整性验证,并提示验证结果;本发明通过签章、合章、验章三部分的配合,支持多人同时的、并行的对同一份PDF文档进行签章,无需等待上一个人签章完成后才到下一个人签章,而且其他某个人签章出错破坏了PDF文档时,无需所有人重新签,提高了多人共同签章场景的办公效率和可用性。提高了多人共同签章场景的办公效率和可用性。提高了多人共同签章场景的办公效率和可用性。


技术研发人员:

林少柳 黄志伟 刘义 邓永仁

受保护的技术使用者:

广东省电子商务认证有限公司

技术研发日:

2022.08.19

技术公布日:

2022/12/22

本文发布于:2024-09-25 00:29:12,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/45786.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:签章   步骤   文档   对象
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议