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

一种实现OFD文件对称加密及对称解密的方法与流程

2022-11-02 08:10:59 来源:中国专利 TAG:
一种实现ofd文件对称加密及对称解密的方法
技术领域
1.本发明属于文件加密技术领域,特别是关于一种实现ofd文件对称加密 及对称解密的方法。


背景技术:

2.ofd(open fixed-layout document)是由工业和信息化部软件司牵头,中国 电子技术标准化研究院成立的版式编写组制定的版式文档国家标准,以方便 的进行电子文档的存储、读取以及编辑。现有的ofd加密实现方案是实现包 内所有的文件的加密,其中包括ofd.xml、doument.xml、publicres.xml、 documentres.xml、extentions.xml、signatures.xml、customtags.xml、 antations.xml等入口文件以及其他比较重要的文件,比如页面流文件 content,xml、标注文件annot_m.xml、模板页文件temp_m.xml,还有印章签 名文件signature.xml、签名值signedvalue.dat以及电子印章文件seal.esl,除 此之外还包括若干图像文件、字体文件等。
3.现有的ofd加解密的规则概括为以下两点:
4.(1)获取文件的方式是先打开ofd文档的入口文件,然后获取所需的 其他文件路径,最后打开和解析文件。但是通过解析入口文件查找需要加密 的文件路径。此方式的缺点是解析入口文件存在一定的损耗,影响性能。
5.(2)每个文件的加密过程都符合“解压打开-压缩-加密-压缩-写入”的规 则。此方式有些耗时,原因有两点,第一点是打开文件时需解压文件,而解 压需耗费一定的时间,第二点是压缩文件也比较耗时,总的来说,解压和压 缩文件影响加密的性能。
6.以上这两条规则表明现有加密方案的流程有些冗余复杂,耗时比较长, 性能不是很高。


技术实现要素:

7.本发明的目的在于提供一种实现ofd文件对称加密及对称解密的方法, 其能够解决现有文件加密方案的流程有些冗余复杂,耗时比较长的问题。
8.本发明提供了一种实现ofd文件对称加密的方法,包括以下步骤:
9.s1,通过读取ofd文件的中心目录,获取所有压缩文件的大小、偏移量 和路径,进而读取每个压缩文件的二进制数据;
10.s2,判断文件是否是压缩的,若是压缩的,则直接加密文件,并将加密后的 文件数据写入压缩包;若不是压缩的,则首先压缩文件,然后加密文件,并将加 密后的文件数据写入压缩包。
11.优选地,所述s2具体包括:
12.s201,读取document.xml文件的二进制数据,判断是否是压缩的,若是压 缩的,则直接采用aes加密文件,并将加密后的文件数据直接写入文件;
13.s202,读取documentres.xml文件的二进制数据,判断是否是压缩的,若 是压缩
的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩, 则先压缩然后加密文件,并将加密后的文件数据直接写入文件;
14.s203,读取publicres.xml文件的二进制数据,判断是否是压缩的,若是 压缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩, 则先压缩然后加密文件,并将加密后的文件数据直接写入文件;
15.s204,读取content.xml文件的二进制数据,判断是否是压缩的,若是压 缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则 先压缩然后加密文件,并将加密后的文件数据直接写入文件;
16.s205,读取temp_m.xml文件的二进制数据,判断是否是压缩的,若是压缩 的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则先 压缩然后加密文件,并将加密后的文件数据直接写入文件;
17.s206,读取annotations.xml文件的二进制数据,判断是否是压缩的,若 是压缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩, 则先压缩然后加密文件,并将加密后的文件数据直接写入文件;
18.s207,读取annotation.xml文件的二进制数据,判断是否是压缩的,若是 压缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩, 则先压缩然后加密文件,并将加密后的文件数据直接写入文件;
19.s208,读取customtags.xml文件的二进制数据,判断是否是压缩的,若是 压缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩, 则先压缩然后加密文件,并将加密后的文件数据直接写入文件;
20.s209,读取tag_xxxx.xml文件的二进制数据,判断是否是压缩的,若是压 缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则 先压缩然后加密文件,并将加密后的文件数据直接写入文件;
21.s210,读取signatures.xml文件的二进制数据,判断是否是压缩的,若是 压缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩, 则先压缩然后加密文件,并将加密后的文件数据直接写入文件,若未压缩,则 先压缩然后加密文件,并将加密后的文件数据直接写入文件;
22.s211,读取signature.xml文件的二进制数据,判断是否是压缩的,若是 压缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩, 则先压缩然后加密文件,并将加密后的文件数据直接写入文件;
23.s212,读取seal.esl.xml文件的二进制数据,判断是否是压缩的,若是压 缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则 先压缩然后加密文件,并将加密后的文件数据直接写入文件;
24.s213,读取signvalue.dat文件的二进制数据,判断是否是压缩的,若是 压缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩, 则先压缩然后加密文件,并将加密后的文件数据直接写入文件;
25.s214,读取extensions.xml文件的二进制数据,判断是否是压缩的,若是 压缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩, 则先压缩然后加密文件,并将加密后的文件数据直接写入文件;
26.s215,读取image_m.png文件的二进制数据,判断是否是压缩的,若是压 缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则 先压缩然后加密文件,并将加密后的文件数据直接写入文件;
27.s216,读取font_m.ttf文件的二进制数据,判断是否是压缩的,若是压缩 的,则直接加密文件,并将加密后的文件数据写入直接写入文件,若未压缩, 则先压缩然后加密文件,并将加密后的文件数据直接写入文件;
28.s217,生成解密入口文件encryptions.xml文件,压缩encryptions.xml, 直接写入文件。
29.本发明还提供了一种实现ofd文件对称解密的方法,包括以下步骤:
30.第一步,通过读取ofd文件的中心目录,获取所有压缩文件的大小、偏 移量和路径,进而读取每个加密文件的二进制数据;
31.第二步,读取encryptions.xml文件的二进制数据,解析encryptions.xml 文件,获取解密密钥;
32.第三步,读取加密文件的数据,使用解密密钥解密文件。
33.优选地,所述第三步具体包括:
34.读取ofd.xml文件的加密数据,解密ofd.xml文件;
35.读取documentres.xml文件的加密数据,解密documentres.xml文件;
36.读取publicres.xml文件的加密数据,解密publicres.xml文件;
37.读取content.xml文件的加密数据,解密content.xml文件;
38.读取temp_m.xml文件的加密数据,解密temp_m.xml文件;
39.读取annotations.xml文件的加密数据,解密annotations.xml文件;
40.读取annotation.xml文件的加密数据,解密annotation.xml文件;
41.读取customtags.xml文件的加密数据,解密customtags.xml文件;
42.读取tag_xxxx.xml文件的加密数据,解密tag_xxxx.xml文件;
43.读取signatures.xml文件的加密数据,解密signatures.xml文件;
44.读取signature.xml文件的加密数据,解密signature.xml文件;
45.读取seal.esl文件的加密数据,解密seal.esl文件;
46.读取signvalue.dat文件的加密数据,解密signvalue.dat文件;
47.读取extensions.xml文件的加密数据,解密extensions.xml文件;
48.读取image_m.png文件的加密数据,解密image_m.png文件;
49.读取font_m.ttf文件的加密数据,解密font_m.ttf文件。
50.本发明还提供了一种实现ofd文件对称加密的系统,所述系统用于实现 ofd文件对称加密的方法的步骤,包括:
51.ofd文件读取模块,用于通过读取ofd文件的中心目录,获取所有压缩 文件的大小、偏移量和路径,进而读取每个压缩文件的二进制数据;
52.加密模块,用于判断文件是否是压缩的,若是压缩的,则直接加密文件,并 将加密后的文件数据写入压缩包;若不是压缩的,则首先压缩文件,然后加密 文件,并将加密后的文件数据写入压缩包。
53.本发明还提供了一种实现ofd文件对称解密的系统,所述系统用于实现 ofd文件
对称解密的方法的步骤,包括:
54.ofd文件读取模块,用于通过读取ofd文件的中心目录,获取所有压缩 文件的大小、偏移量和路径,进而读取每个加密文件的二进制数据;
55.解密模块,用于读取encryptions.xml文件的二进制数据,解析 encryptions.xml文件,获取解密密钥;读取加密文件的数据,使用解密密钥 解密文件。
56.与现有技术相比,根据本发明的一种实现ofd文件对称加密及对称解密 的方法,其中对称加密的方法包括以下步骤:s1,通过读取ofd文件的中心 目录,获取所有压缩文件的大小、偏移量和路径,进而读取每个压缩文件的 二进制数据;s2,判断文件是否是压缩的,若是压缩的,则直接加密文件,并将 加密后的文件数据写入压缩包;若不是压缩的,则首先压缩文件,然后加密文 件,并将加密后的文件数据写入压缩包。该方案没有解压,最多只有一次压缩, 相比现有的技术来说,现有技术的加密流程是“解压打开-压缩-加密-压缩
‑ꢀ
写入”,此流程包含一次解压和两次压缩,流程冗余并且性能受解压缩影响性 能不高。本发明的加密流程有两种可能:第一是“读取-加密-写入”,第二是
ꢀ“
读取-压缩-加密-写入”,本发明没有解压,最多只有一次压缩,相比现有 的技术来说,本发明流程更加简洁,性能更高。
附图说明
57.图1为本发明提供的一种实现ofd文件对称加密的方法流程图;
58.图2为本发明提供的一种实现ofd文件对称解密的方法示意图。
具体实施方式
59.下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本 发明的保护范围并不受具体实施方式的限制。
60.除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包 括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或 组成部分,而并未排除其它元件或其它组成部分。
61.如图1所示,根据本发明优选实施方式的一种实现ofd文件对称加密的 方法,包括以下步骤:
62.s1,通过读取ofd文件的中心目录,获取所有压缩文件的大小、偏移量 和路径,进而读取每个压缩文件的二进制数据;
63.s2,判断文件是否是压缩的,若是压缩的,则直接加密文件,并将加密后的文 件数据写入压缩包;若不是压缩的,则首先压缩文件,然后加密文件,并将加密后 的文件数据写入压缩包。
64.为了更好的阐述本发明的技术方案,首先介绍一下zip的总体格式,zip 格式包括“压缩文件头信息”、“压缩文件压缩数据”、“中心目录”、“中心目 录记录结束符”等四大部分,其中“压缩文件头信息”记录了相应压缩文件 的信息,“压缩文件压缩数据”记录了压缩文件的二进制数据,“中心目录
”ꢀ
记录了压缩文件的目录信息,包括压缩文件的大小、偏移量和路径等,“中心 目录记录结束符”存在于整个归档包的结尾,记录了“中心目录”的信息, 包括文件总数和偏移量。
65.在一个具体的实施场景中:
66.(1)打开ofd文件,解析ofd文件的“中心目录”,获取所有压缩文件 的大小、偏移量和路径。
67.(2)读取document.xml文件的二进制数据,判断是否是压缩的,若是压缩 的,则直接采用aes加密文件,并将加密后的文件数据直接写入文件。
68.(3)读取documentres.xml文件的二进制数据,判断是否是压缩的,若是 压缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则 先压缩然后加密文件,并将加密后的文件数据直接写入文件。
69.(4)读取publicres.xml文件的二进制数据,判断是否是压缩的,若是压缩 的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则先压 缩然后加密文件,并将加密后的文件数据直接写入文件。
70.(5)读取content.xml文件的二进制数据,判断是否是压缩的,若是压缩的, 则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则先压缩 然后加密文件,并将加密后的文件数据直接写入文件。
71.(6)读取temp_m.xml文件的二进制数据,判断是否是压缩的,若是压缩 的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则先压 缩然后加密文件,并将加密后的文件数据直接写入文件。
72.(7)读取annotations.xml文件的二进制数据,判断是否是压缩的,若是压 缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则先 压缩然后加密文件,并将加密后的文件数据直接写入文件。
73.(8)读取annotation.xml文件的二进制数据,判断是否是压缩的,若是压缩 的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则先压 缩然后加密文件,并将加密后的文件数据直接写入文件。
74.(9)读取customtags.xml文件的二进制数据,判断是否是压缩的,若是压 缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则先 压缩然后加密文件,并将加密后的文件数据直接写入文件。
75.(10)读取tag_xxxx.xml文件的二进制数据,判断是否是压缩的,若是压 缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则先 压缩然后加密文件,并将加密后的文件数据直接写入文件。
76.(11)读取signatures.xml文件的二进制数据,判断是否是压缩的,若是压 缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则先 压缩然后加密文件,并将加密后的文件数据直接写入文件,若未压缩,则先压 缩然后加密文件,并将加密后的文件数据直接写入文件。
77.(12)读取signature.xml文件的二进制数据,判断是否是压缩的,若是压缩 的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则先压 缩然后加密文件,并将加密后的文件数据直接写入文件。
78.(13)读取seal.esl.xml文件的二进制数据,判断是否是压缩的,若是压缩的, 则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则先压缩 然后加密文件,并将加密后的文件数据直接写入文件。
79.(14)读取signvalue.dat文件的二进制数据,判断是否是压缩的,若是压缩 的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则先压 缩然后加密文件,并将加密后的文件数据直接写入文件。
80.(15)读取extensions.xml文件的二进制数据,判断是否是压缩的,若是压 缩的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则先 压缩然后加密文件,并将加密后的文件数据直接写入文件。
81.(16)读取image_m.png文件的二进制数据,判断是否是压缩的,若是压缩 的,则直接加密文件,并将加密后的文件数据直接写入文件,若未压缩,则先压 缩然后加密文件,并将加密后的文件数据直接写入文件。
82.(17)读取font_m.ttf文件的二进制数据,判断是否是压缩的,若是压缩的, 则直接加密文件,并将加密后的文件数据写入直接写入文件,若未压缩,则先 压缩然后加密文件,并将加密后的文件数据直接写入文件。
83.(18)生成解密入口文件encryptions.xml文件,压缩encryptions.xml, 直接写入文件。
84.本发明实施例还提供了一种实现ofd文件对称加密的系统,所述系统用 于实现前面所提到的实现ofd文件对称加密的方法的步骤,包括:
85.ofd文件读取模块,用于通过读取ofd文件的中心目录,获取所有压缩 文件的大小、偏移量和路径,进而读取每个压缩文件的二进制数据;
86.加密模块,用于判断文件是否是压缩的,若是压缩的,则直接加密文件,并 将加密后的文件数据写入压缩包;若不是压缩的,则首先压缩文件,然后加密 文件,并将加密后的文件数据写入压缩包。
87.如图2所示,本发明实施例还提供了一种实现ofd文件对称解密的方法, 包括以下步骤:
88.第一步,通过读取ofd文件的中心目录,获取所有压缩文件的大小、偏 移量和路径,进而读取每个加密文件的二进制数据;
89.第二步,读取encryptions.xml文件的二进制数据,解析encryptions.xml 文件,获取解密密钥;
90.第三步,读取加密文件的数据,使用解密密钥解密文件。
91.在一个具体的实施场景中:
92.ofd文件解密的具体流程如下(图2中虚线框表示该文件可能会存在):
93.(1)打开ofd,解析ofd文件的“中心目录”,获取所有压缩文件的大小、 偏移量和路径。
94.(2)读取encryptions.xml文件的二进制数据,解析encryptions.xml 文件,获取解密密钥。
95.(3)读取ofd.xml文件的加密数据,解密ofd.xml文件。
96.(4)读取documentres.xml文件的加密数据,解密documentres.xml文 件。
97.(5)读取publicres.xml文件的加密数据,解密publicres.xml文件。
98.(6)读取content.xml文件的加密数据,解密content.xml文件。
99.(7)读取temp_m.xml文件的加密数据,解密temp_m.xml文件。
100.(8)读取annotations.xml文件的加密数据,解密annotations.xml文 件。
101.(9)读取annotation.xml文件的加密数据,解密annotation.xml文件。
102.(10)读取customtags.xml文件的加密数据,解密customtags.xml文件。
103.(11)读取tag_xxxx.xml文件的加密数据,解密tag_xxxx.xml文件。
104.(12)读取signatures.xml文件的加密数据,解密signatures.xml文件。
105.(13)读取signature.xml文件的加密数据,解密signature.xml文件。
106.(14)读取seal.esl文件的加密数据,解密seal.esl文件。
107.(15)读取signvalue.dat文件的加密数据,解密signvalue.dat文件。
108.(16)读取extensions.xml文件的加密数据,解密extensions.xml文件。
109.(17)读取image_m.png文件的加密数据,解密image_m.png文件。
110.(18)读取font_m.ttf文件的加密数据,解密font_m.ttf文件。(直接 使用对称算法aes进行解密文件)。
111.本发明实施例还提供了一种实现ofd文件对称解密的系统,系统用于实 现如前所描述的实现ofd文件对称解密的方法的步骤,包括:
112.ofd文件读取模块,用于通过读取ofd文件的中心目录,获取所有压缩 文件的大小、偏移量和路径,进而读取每个加密文件的二进制数据;
113.解密模块,用于读取encryptions.xml文件的二进制数据,解析 encryptions.xml文件,获取解密密钥;读取加密文件的数据,使用解密密钥 解密文件。
114.综上所述,现有的ofd加解密的规则概括为以下两点:
115.1)获取文件的方式是先打开ofd文档的入口文件,然后获取所需的其他 文件路径,最后打开和解析文件。
116.2)每个文件的加密过程都符合“解压打开-压缩-加密-压缩-写入”的规 则。
117.3)每个文件的解密过程都符合“读取-解密-解压-打开”的规则。
118.以上这两条规则表明现有加密方案的流程有些冗余复杂,耗时比较长, 性能不是很高。
119.简言之,现有技术的加密流程是“解压打开-压缩-加密-压缩-写入”, 此流程包含一次解压和两次压缩,流程冗余并且性能受解压缩影响,效果不 好。本发明的加密流程有两种可能:第一是“读取-加密-写入”,第二是“读 取-压缩-加密-写入”,本发明没有解压,最多只有一次压缩,相比现有的技 术来说,本发明流程更加简洁,性能更高,效果更好。
120.现有技术的解密流程是“读取-解压-解密-解压”,此流程包含两次解压, 流程冗余并且性能受二次解压影响性能不高。本发明的解密流程是“读取-解 密-解压”,本发明解密流程只有一次解压,相比现有的技术来说,本发明流 程更加简洁,性能更高。
121.前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。 这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述 教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在 于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实 现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。 本发明的范围意在由权利要求书及其等同形式所限定。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献