CN116685973A - 结构化格式文档的独特内容确定 - Google Patents
结构化格式文档的独特内容确定 Download PDFInfo
- Publication number
- CN116685973A CN116685973A CN202180075686.9A CN202180075686A CN116685973A CN 116685973 A CN116685973 A CN 116685973A CN 202180075686 A CN202180075686 A CN 202180075686A CN 116685973 A CN116685973 A CN 116685973A
- Authority
- CN
- China
- Prior art keywords
- components
- file
- document
- hash value
- subset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 40
- 239000000470 constituent Substances 0.000 claims abstract description 9
- 238000012545 processing Methods 0.000 abstract description 13
- 238000004806 packaging method and process Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 3
- 238000011960 computer-aided design Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010348 incorporation Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Abstract
提供了一种针对结构化文档生成摘要的计算机实现的方法,该方法包括:选择OOXML文档的多个组成部分的子集,其中,所选择的组成部分的子集中的至少一个是XML文件,并且其中,选择子集排除命名为“docProps\app.xml”、“docProps\core.xml”和“docProps\custom.xml”的文件;对所选择的组成部分的子集进行排序;通过去除引用没有包括在所选择的子集中的组成部分的至少一个关系条目以及通过标识符值对关系进行分类来处理关系文件;针对所选择的组成部分的子集中的每一个生成组成散列值;以及将每个组成散列值转换成字节数组,并将字节数组附加至规范字节流。
Description
技术领域
本公开内容涉及分析结构化格式文档的内容。
背景技术
该背景技术部分出于大体上描述本公开内容的上下文的目的而提供。就在该背景技术部分中描述的工作的程度而言,目前署名的发明人的工作以及在提交时可能未被另外视为现有技术的描述的各方面既没有明确地也没有隐含地被承认为是针对本公开内容的现有技术。
出于跨许多行业的不同目的而使用数字文件。必须对一些行业法规例如对数字文件施加限制的HIPAA、SOX、GDPR和ISO 9000进行保护、认证或审核。
散列通常用于评估文件的内容。散列算法使用单向函数将文件的内容映射至散列值(也称为摘要值)中。对文件中的任何数据的更改将引起不同的散列值。相关的散列算法包括消息摘要5(MD5)、Rivest-Shamir-Adleman(RSA)、安全散列算法(SHA)、Scrypt、Ethash和循环冗余校验(CRC),但不限于此。
散列可以用于通过计算文件的当前散列值并将该当前散列值与文件的先前散列值进行比较来确定文件是否已经被更改或更新。如果散列值不同,则数字文件的内容自上次计算散列值以来已经被更改。匹配的散列值高度肯定地确认数字文件的内容未被更改。
通过使用散列可以针对数字文件创建数字签章。数字签章可以包括存储在区块链分类帐例如比特币或以太坊分类帐中的散列值。可以从数字签章中读取散列值,以验证文件内容与在创建数字签章时的文件内容是否匹配。可以利用区块链技术来管理数字签章,以确保数字签章的真实性。用户或系统可以利用该方法来证实数字文件的数据完整性和真实性,因为数据错误和对文件的有意修改将导致不同的散列值。
结构化数字文件例如Microsoft OfficeTM文件(例如,WordTM、ExcelTM、PowerPointTM等)包含各种信息,所述各种信息包括例如内容信息、格式化信息和元数据信息。这些文件可以以Open Office XML(OOXML)的格式被存储。即使文件中的实质性信息没有更改,但是元数据信息例如文件的上次访问日期或打印日期可能会在文件被访问时更新或更改。
正如本申请的发明人已经确定的,使用结构化文档的全部内容可能限制散列和数字签章的效果,所述结构化文档的全部内容包括与数据完整性或真实性无关的信息。此外,存储在数字文件中的顺序数据也可能导致散列结果的变化,而事实上,文件中的底层数据是相同的。更具体地,文档之间的差异可能不指示文档的内容或呈现方面的差异。在由办公文档编辑器打开文档后,即使用户未对文档做出更改,这些非实质性差异也可能导致传统的签章处理和认证处理失败。
发明内容
本发明的目的是通过以下操作来提高例如OOXML的结构化文档的散列和数字签章的有用性:仅对结构化文档的内容进行散列以避免对特定文档的副本之间的变化的错误指示。该目的通过根据所附权利要求的主题来解决。
在权利要求书、以下说明书和附图中描述了本发明的示例。
提供了一种针对结构化文档生成摘要的计算机实现的方法。该方法包括:选择OOXML文档的多个组成部分的子集,其中,所选择的组成部分的子集中的至少一个是XML文件,并且其中,选择子集排除命名为“docProps\app.xml”、“docProps\core.xml”和“docProps\custom.xml”的文件;对所选择的组成部分的子集进行排序;处理来自所选择的组成部分的子集的关系文件。处理该关系文件包括:去除引用没有包括在所选择的子集中的组成部分的至少一个关系条目,以及通过标识符值对所述关系进行分类。该计算机实现的方法还包括:针对所选择的组成部分的子集中的每一个生成组成散列值,以及将每个组成散列值转换成字节数组,并将字节数组附加至规范字节流。
提供了一种针对结构化文档生成摘要的计算机实现的方法,该方法包括:选择结构化文档的多个组成部分的子集;对组成部分的子集进行排序;针对组成部分的子集中的每一个生成组成散列值;以及将每个组成散列值转换成字节数组,并将字节数组附加至规范字节流。在一些示例中,结构化文档是OOXML文件,该OOXML文件是ZIP存档,并且多个组成部分中的每一个是文件。在一些示例中,该方法包括计算规范字节流的总散列值。在一些示例中,所选择的组成部分的子集不包括以下日期中的任何日期:创建结构化文档的日期、上次打印结构化文档的日期、上次编辑结构化文档的日期、上次打开结构化文档的日期。在一些示例中,所选择的组成部分的子集包括命名为“_rels\.rels”的关系文件,其中,关系文件包含类型为“officeDocument”的关系。在一些示例中,所选择的组成部分的子集不包括命名为“custom.xml”的文档。在一些示例中,该计算机实现的方法包括:将规范字节流的总散列值存储在记录中;选择第二多个组成部分的第二子集;对第二结构化文档的第二多个组成部分进行排序;针对第二组成部分的子集中的每一个生成第二组成散列值;将每个第二散列值转换成第二字节数组,并将第二字节数组附加至第二规范字节流;计算第二规范字节流的第二总散列值;以及如果第二规范字节流的第二散列值与记录中的总散列值匹配,则确定结构化文档与第二结构化文档基本上相同。
提供了一种包含可执行软件指令的非暂态计算机可读介质,该可执行软件指令在被执行时:选择结构化文档的多个组成部分的子集;对组成部分的子集进行排序;针对组成部分的子集中的每一个生成组成散列值;以及将每个组成散列值转换成字节数组并将字节数组附加至规范字节流。在一些示例中,结构化文档是OOXML文件,该OOXML文件是ZIP存档,并且多个组成部分中的每一个是文件。在一些示例中,该介质还包括指令,所述指令在被执行时计算规范字节流的总散列值。在一些示例中,所选择的组成部分的子集不包括以下日期中的任何日期:创建结构化文档的日期、上次打印结构化文档的日期、上次编辑结构化文档的日期或者上次打开结构化文档的日期。在一些示例中,所选择的组成部分的子集包括命名为“_rels\.rels”的关系文件,其中,关系文件包含类型为“officeDocument”的关系。在一些示例中,所选择的组成部分的子集不包括命名为“custom.xml”的文档。在一些示例中,该介质包括指令,所述指令在被执行时:将规范字节流的总散列值存储在记录中;选择第二多个组成部分的第二子集;对第二结构化文档的第二多个组成部分进行排序;针对第二组成部分的子集中的每一个生成第二组成散列值;将每个第二散列值转换成第二字节数组,并将第二字节数组附加至第二规范字节流;计算第二规范字节流的第二总散列值;以及如果第二规范字节流的第二散列值与记录中的总散列值匹配,则确定结构化文档与第二结构化文档基本上相同。
附图说明
图1是根据本公开内容的实施方式的用于处理文档的系统。
图2是根据本公开内容的实施方式的文字处理文档。
图3a至图3c示出了根据本公开内容的实施方式的结构化文档的内部结构。
图4是根据本公开内容的实施方式的OOXML文档内容文件。
图5是根据本公开内容的特定实施方式的用于生成结构化文档的摘要的计算机实现的方法。
图6是根据本公开内容的特定实施方式的用于确定结构化文档的摘要的计算机实现的方法。
具体实施方式
如先前所讨论的,本文中的教导涉及用于对结构化数字文件进行散列和签章的改进的方法。数字文件可以以不同的文件格式来表示。在一些文件格式中,文档是包含表示该文档的内容、格式化和其他方面的文件集的打包文件。例如,Microsoft OfficeTM文档以Office Open XML(OOXML)文件格式被存储。OOXML文件格式将包含Microsoft OfficeTM文档内容的大量XML文件打包。这些文件可以存储在开放打包约定(OPC)打包中,该开放打包约定打包包括在ZIP存档文件中一起打包的Microsoft Office文档的内容、格式和元数据的XML文件和数据文件。可以利用本公开内容进行处理的示例Microsoft OfficeTM文档包括以OOXML格式存储的具有DOCX、XLSX和PPTX文件扩展名的文件。另一标准开放文档格式是开放文档格式(ODF)。ODF文档是XML文件的ZIP存档打包,如以下更详细说明的。其他类型的结构化数字文件也可能是合适的。
许多结构化文档不需要特定的内部文件顺序,并且可以允许内容在内部文件内以不同的顺序出现,而不改变办公文档的外观或内容。例如,办公文档可以限定诸如标题、正文文本、标题1、标题2等的样式的列表。可以对这些样式的限定进行重新布置,而不对文档的外观或内容进行任何更改。在一些示例中,样式限定可以是较大的结构化文件(例如XML文件)的一部分并且可以在该文件的开头、中间或结尾处,而不更改文档的外观或内容。由一个应用(例如Microsoft Office WordTM)创建的文档可以以一种顺序并在文字处理文档的一个位置中保存样式信息。结构化文档可以存储在可以改变文档元数据的内容管理系统(CMS)中。一种这样的CMS系统是SharePointTM。当用户在CMS中打开文档时,CMS可以例如通过对列表项目修改的日期进行更新来修改元数据以记录文档被打开的日期,而不改变文档。更具体地,对于查看或打印文档的用户而言,文档将保持相同,但是整个文档的散列将与原始文档的散列不匹配。
根据本公开内容的一些示例,一个或更多个组件可以用于准备或处理用于散列和数字签章的数字文件。例如,在一些实施方式中,规范格式器可以用来以用于散列的规范形式对表示数字文件的文件打包进行布置。规范格式器生成用于散列的数字文件的规范流。打包部分选择器用来选择用于散列的数字文件的一个或更多个部分。关系信息处理器根据包含在数字文件中的信息或由文件中的统一资源标识符标识的信息来处理关系信息。
图1是根据本公开内容的实施方式的用于处理文档的系统。系统100包括中央处理单元(CPU)102、随机存取存储器(RAM)104和磁盘106。磁盘106是存储文档108和程序110的非暂态计算机可读介质。文档108是要根据基于XML的开放式文档标准而被数字签章例如被格式化的文档。程序110是用于执行本公开内容中描述的方法的软件程序。在操作中,CPU102将程序110加载至RAM 104中并执行程序110。程序110将文档108加载至RAM中并执行本公开内容中描述的方法,以生成文档108的内容中的一部分内容的规范流112。稍后的针对文档108’执行程序110将生成规范流112’。对规范流112和规范流112’的比较(例如,通过对每个规范流进行散列并比较它们的散列值)将确定文档108的相关内容与文档108’的相关内容是否匹配。
程序110包括规范变换113。规范变换113以规范的顺序布置表示数字文件的文件打包,以控制要组合成文档的最终摘要的散列值的序列。在一些示例中,规范变换113可以应用规则来以如下顺序布置文档内的文件,所述顺序独立于文件被存储在包中的顺序。规范格式器不修改数字文件或表示该数字文件的打包的内容,而是在RAM 104中生成数据的规范形式,用于以独立于打包的内容的顺序的方式对文件的内容进行散列和验证。
Microsoft OPC数字签名框架示出了用于OPC打包的示例规范格式器。数字签名框架使用于OPC打包的散列值的创建和验证标准化。该框架通过OPC打包内的统一资源标识符来指定规范形式。例如,OPC数字签名框架标识在OPC打包中被标识为“清单”标签的清单文件。示例清单标签是:<Manifest xmlns:opc=“http://schemas.openxmlformats.org/package/2006/digital-signature”>。清单文件是所有打包部分和所有打包关系的集合。OPC数字签名框架可以使用清单文件的内容来以用于散列的规范形式布置OPC打包。在一些示例中,使用SignedXml API对清单文件进行签名,并将签名与清单文件一起保存在OPC打包中。OPC数字签名框架支持W3CXML数字签名标准(其可以在https://www.w3.org/TR/xmldsig-corel/处被找到)以及对OPC打包内容的处理。
在一些示例中,程序110包括打包部分选择器114。打包部分选择器114选择打包中的要被包括在散列生成中的部分(例如,要散列的文档)。在一些示例中,打包部分选择器114读取文档外部的文件,并且该文件指定文档中的将在散列处理中包括和/或从散列处理中排除的部分。在一些示例中,打包部分选择器114基于包括文档内限定的属性或关系的预定标准集来确定针对散列要使用或要排除哪些信息。
在一些示例中,选择标准明确地被包括在要提取摘要的数字文件中。一种方法是在清单文件内包括指示哪些文件应当包括在摘要处理中(或从摘要处理中排除)的标志。在一些示例中,选择标准是通过参考诸如标准化的规范形式的外部源来指定的。一种方法是在文档内的文件中嵌入的统一资源标识符中指定选择标准。在一些示例中,选择标准是在要提取摘要的文件外部指定的。用于对合同提取摘要的示例标准仅包括内容文件(例如“文档.xml”和“图像1.svg”),因为格式化信息与法律合同的主旨不相关。用于对已发布的工作提取摘要的示例标准仅排除了元数据,因为格式化通常强化并且有时限定已发布的工作。用于对计算机辅助设计(CAD)文件提取摘要的示例标准包括结构设计元素,同时排除模拟输入和结果。用于对CAD设计提取摘要的另一示例标准排除了公司徽标、版权声明和其他非工程信息。规范形式的示例说明包括用于不同类型的文档的形式,所述不同类型的文档包括文字处理文档、电子表格和演示文稿。
在一些示例中,打包部分选择器114基于OPC打包内容中的信息的参考类型来为Microsoft OfficeTM文档选择所述打包的部分。在一种方法中,打包部分选择器114选择对如在OPC打包中呈现的文档的内容、样式和布局进行标识的所有打包部分。因此,打包部分选择器114排除被认为与文件的完整性或真实性不相关的数字文件的特定元数据,例如上次访问的日期。作为示例,打包部分选择器114排除OPC打包中的特定信息,例如OPC打包中的自定义部分和对自定义XML属性的引用。在一些示例中,打包部分选择器114基于清单文件中描述的信息来选择OPC打包的部分。在内容类型==“application/vnd.openxmlformats-package.relationships+xml”或“application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml”的情况下,打包部分选择器114选择信息。
在一些示例中,关系信息处理器116可以以规范形式对信息块重新排序,以进一步实现本公开内容的目的。在一些示例中,关系信息处理器116标识文档内的在被重新排序时等同的结构化数据。关系信息处理器116以规范形式对该数据进行重新排序,以维持要被馈送至散列函数中的信息的一致顺序。在一些示例中,关系信息处理器116根据在该文件内的统一资源定位符值对清单文件的内容进行分类。在一些示例中,关系信息处理器116根据样式的名称对“样式.xml”的内容进行分类。在一些示例中,关系信息处理器116以无顺序的XML文件来生成每种元素的内容的散列值,并且基于所生成的散列值对元素进行分类。
在一些示例中,结构化文档包括关系信息,该关系信息指定表示文档的打包中的文件与数据之间的关系的细节。关系信息为文档查看器/编辑器提供了用于对文档内的文件进行导航的路线图,并指定这些文件之间的关系。在一些示例中,打包的关系信息是以诸如XML的标记语言指定的。例如,OPC打包包括指定打包的各种部分之间的关系的关系信息。使用<Relationships>标签将OPC打包中的关系信息存储在清单文件中或在清单文件中使用<Relationships>标签来标识OPC打包中的关系信息。示例标签是:<Relationshipsxmlns=“http://schemas.openxmlformats.org/package/2006/relationships”>。
在一些示例中,关系信息是基于文件被存储在打包中的顺序而生成的。如果文档A和文档B包含相同的文件,但顺序不同,则针对文档A的内容的散列将不同于针对文档B的内容的散列,即使这两个文档在被查看时看起来是相同的。因此,关系信息处理器116在清单文件被馈送至散列函数中之前对该文件的内容进行分类,以提供与文件被存储在打包中的顺序无关的关系信息的一致散列。
图2是根据本公开内容的实施方式的文字处理文档。文档200在诸如MicrosoftWordTM的文字处理程序中以打印预览模式被示出。文档200可以包括诸如标题202、带项目符号的文本元素204、图像206和表格208的内容。文档200可以是多页文档中的第一页。文档200还可以包括在查看或编辑文档时不可见的其他数据(例如元数据)。例如,元数据可以记录创建、上次编辑和上次打开文档的时间。
图3a示出了根据本公开内容的实施方式的文档的内部结构。磁盘106中的文档300作为开放式办公可扩展标记语言(Open Office Extensible Markup Language,OOXML)格式文件,例如由Microsoft WordTM创建的文件。文档300被存储为包含以子目录组织的文件的ZIP存档文件容器。文档300包含子目录302至312和文件319。该文件集合可以通过文字处理程序被加载至RAM 104中,并且也可以如图2所示被查看。
命名为“[Content_Types].xml”的文件319限定在文档300中使用的内容的类型,并且引用文档300内的其他文件319。文件夹302被命名为“docProps”并且包含关于文档300的元数据。例如,命名为“app.xml”的文件319将用于创建文档的应用标识为“MicrosoftOffice Word”版本16.0000。命名为“core.xml”的文件319针对文档300列举文档属性,所述文档属性包括文档的主题、创建者、创建日期和上次修改的日期。在一些示例中,文件夹302还可以包括命名为“custom.xml”的文件,其包含标准元数据字段之外的附加元数据。打包部分选择器排除文件夹302中的文件,包括“app.xml”、“core.xml”和“custom.xml”。文件夹304被命名为“word”,并且包括构成文档300的文本内容和格式化的六个文件。命名为“document.xml”的文件319包含文档300的文本,包括标题、带项目符号的列表的文本和表格的文本。命名为“fontTable.xml”的文件319列举文档300中使用的字体,命名为“numbering.xml”的文件319描述带项目符号的列表中使用的项目符号符号表的样式。命名为“settings.xml”的文件319为文字处理应用指定一些设置,例如文档200中示出的超链接的格式化。命名为“styles.xml”的文件319列举文档中使用的已限定的格式化样式。命名为“webSettings.xml”的文件319引用各种XML模式,以用于将文档转换成用于web查看的HTML。
文件夹306包含两个图像文件。图像文件319被命名为“image1.png”和“image2.svg”,并且图像文件319是关于同一飞机图标206的两个不同图像文件。文件夹308包含命名为“theme1.xml”的单个文件319,该文件319限定由Microsoft Word用来协调颜色和样式的文档主题。
命名为“[Content_Types].xml”和“document.xml.rels”的文件319是对文档300中的其他文件进行列举和分类的清单。
图3b示出了根据本公开内容的实施方式的文档的内部结构。磁盘106中的文档350作为开放文档格式(ODF)文件。文档350被存储为包含文件和子文件夹的ZIP存档文件容器。文档350包含文件352至360和子文件夹351。该文件集合可以由文字处理程序加载至RAM104中,并且可以如图2所示被查看。文件352被命名为“meta.xml”并且包含用于文档350的元数据,例如文档创建者的姓名、上次打印的日期和用于创建文件的软件的名称。文件354被命名为“style.xml”,并且文件354列举了文档中使用的已限定的格式化样式。文件356被命名为“setting.xml”,并且文件356包含针对文字处理程序的设置。文件358被命名为“content.xml”,并且文件358包含文档350的内容,例如图2所示出的文本和格式化。文件360被命名为“manifest.xml”,并且文件360列举了文档350中使用的其他限定类型的内容并引用文档350内的其他文件352至360。打包部分选择器排除文件352。
图3c示出了根据本公开内容的实施方式的文档的内部结构。文档370作为包含元数据372和内容374的结构化文档而被存储在磁盘106中。元数据372包含用于文档370的元数据,例如上次打印的日期。打包部分选择器排除元数据372。
图4是根据本公开内容的实施方式的OOXML文档内容文件。内容文件400是包括元素402至428的XML格式的文档。元素402是在文档300中找到的内容类型的容器。元素404至412基于文件扩展名限定默认内容。例如,元素404针对文档中的具有命名为“png”的文件扩展名404a的文件限定命名为“image/png”的内容类型404b,该文件是可移植网络图形图像文件。元素412至428限定对默认内容类型的覆盖。例如,元素412针对被标识为命名为“/word/document.xml”的部分412a的特定文件限定“document.main+xml”(为清楚起见在图中被缩短)的内容类型412b。(未缩写的内容类型412a是“application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml”。)该内容类型表示部分412a是文字处理文档的主要内容。打包部分选择器排除由426和428引用的文件。
图5是根据本公开内容的特定实施方式的用于生成结构化文档的摘要的计算机实现的方法。方法500包括在诸如文档108的文档上执行的六个功能块。在块502处,CPU 102加载作为文件的ZIP存档的结构化文档,并且标识在摘要提取处理中要被排除的文件。如以上所讨论的,排除“docProps”文件夹中的文件,即app.xml、core.xml和(如果存在)custom.xml。
在块504处,CPU 102以规范顺序对未排除的文件集进行排序。在一个示例中,CPU102通过读取包括在ZIP存档中的清单文件来确定文件集。在另一示例中,CPU 102通过列出ZIP存档中的文件来确定文件集。CPU 102以字母顺序对文件引用进行分类以生成经分类的列表。在一些示例中,在图3a中示出了文档中的文件列表。在一些示例中,CPU 102按照路径(或URL)根据字母顺序对文件引用进行如下分类:
·_rels/*/.rels
·word\_rels\document.xml.rels
·word\document.xml
·word\fontTable.xml
·word\media\image1.png
·word\media\image2.svg
·word\numbering.xml
·word\settings.xml
·word\styles.xml
·word\theme\theme1.xml
·word\webSettings.xml
可以利用关系变换算法来预处理关系文件(例如,扩展名为“.RELS”的那些文件),所述关系变换算法例如是在以下中指定的一个算法:开放式办公XML(Office Open XML)的第2部分:开放打包约定(2006年12月)的部分12.2.4.26(在https://www.ecma-international.org/publications-and-standards/standards/ecma-376/处可获得)。该处理包括去除可忽略的内容、版本控制指令、对缺失部分的引用等步骤。该处理还包括通过关系的Id值对它们进行分类。该处理还会从关系文件中省略其中该关系引用了被打包部分选择器省略的部分的任何关系。关系文件中的关系条目包括关系标识符和目标文件名,如在下面的示例中:
<Relationship Id="rId2"
Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"Target="styles.xml"/>
在块506中,CPU 102针对文件列表中的要散列的文件生成摘要值。CPU 102读取作为字节流的当前文件的内容,并将该数据馈送至指定的散列函数中。散列函数的输出是摘要。
在块508中,CPU 102将来自块506的摘要转换成存储在RAM 104中的字节数组。该字节数组是针对散列函数的合适输入。对于每个文件,重复块506和块508。
在块510中,CPU 102将来自块508的字节数组与单个规范流相结合。如果附加文件还没有被提取摘要,则CPU 102返回至块506。
在块512中,CPU 102返回规范流以计算最终散列。CPU 102从规范流中读取数据字节,并将该数据馈送至散列函数中。所得到的摘要被存储在RAM 104中,并且所得到的摘要可用于与先前存在的摘要值进行比较或者可用于并入至新的数字签章中。
在一些示例中,块502、块504和块506被重新布置,而不影响方法500的结果。
图6是根据本公开内容的特定实施方式的用于确定结构化文档的摘要的计算机实现的方法。方法600包括在诸如文档370的文档上要执行的六个功能块。XML容器不需要包含用于分类的唯一标识符或其他有用的密钥。两个容器可以具有相同的名称但内容不同,例如,容器可以仅通过文档内的内容和位置来标识与不同的带项目符号的列表容器可区分的带项目符号的列表。
在块602处,CPU 102加载包括元素的容器的结构化文档。CPU 102针对每个容器生成摘要值,并将摘要作为与其相应容器相关联的字节数组存储在RAM 104中。
在块604处,CPU 102以规范顺序对结构化文档的部分重新排序。CPU 102通过相应的摘要值对容器进行分类。
在块606处,CPU 102标识哪些容器要从最终摘要中被排除。在一个示例中,CPU102排除包含文档属性的元数据容器。
在块608处,CPU 102将来自块602的字节数组与单个规范流相结合。
在块610处,CPU 102返回规范流,以计算关于关系信息的最终散列。CPU 102从规范流中读取数据字节,并将该数据馈送至指定的散列函数(该散列函数不需要与块506中的散列函数相同)。所得到的摘要被存储在RAM 104中,并且所得到的摘要可用于与先前存在的摘要值进行比较或者可用于并入至新的数字签章中。
本领域技术人员将理解,在不脱离本发明的精神和范围的所有情况下,可以对所公开的实施方式进行多种变更。例如,尽管所公开的实施方式涉及Open XML MicrosoftOffice文件格式,但是上述方法可以用于对其他格式和类型的数字文件进行签章和验证。上述方法可以在数字电路系统、由处理器执行的指令或其任何合适的组合中被实现。
对组件、处理步骤和其他元素的具体引用不旨在进行限制。此外,应当理解,当参照替代附图时,相似的部分具有相同或相似的附图标记。还应当注意,附图是示意性的并被提供用于指导技术人员并且不一定按比例绘制。更确切地说,附图中所示的各种绘制比例、纵横比和组件数目可能被故意扭曲,以使某些特征或关系更容易理解。
Claims (15)
1.一种针对结构化文档生成摘要的计算机实现的方法,包括:
选择OOXML文档的多个组成部分的子集,其中,所选择的组成部分的子集中的至少一个是XML文件,并且其中,选择所述子集排除命名为“docProps\app.xml”、“docProps\core.xml”和“docProps\custom.xml”的文件;
对所选择的组成部分的子集进行排序;
如下处理来自所选择的组成部分的子集的关系文件:
去除引用没有包括在所选择的子集中的组成部分的至少一个关系条目,以及
通过标识符值对所述关系进行分类;
针对所选择的组成部分的子集中的每一个生成组成散列值;以及
将每个组成散列值转换成字节数组,并将所述字节数组附加至规范字节流。
2.一种针对结构化文档生成摘要的计算机实现的方法,包括:
选择结构化文档的多个组成部分的子集;
对所述组成部分的子集进行排序;
针对所述组成部分的子集中的每一个生成组成散列值;以及
将每个组成散列值转换成字节数组,并将所述字节数组附加至规范字节流。
3.根据权利要求1所述的方法,其中,所述结构化文档是OOXML文件,所述OOXML文件是ZIP存档,并且所述多个组成部分中的每一个是文件。
4.根据权利要求1所述的方法,还包括计算所述规范字节流的总散列值。
5.根据权利要求1所述的方法,其中,所选择的组成部分的子集不包括以下日期中的任何日期:
创建所述结构化文档的日期;
上次打印所述结构化文档的日期;
上次编辑所述结构化文档的日期;以及
上次打开所述结构化文档的日期。
6.根据权利要求2所述的方法,其中,所选择的组成部分的子集包括命名为“_rels\.rels”的关系文件,其中,所述关系文件包含类型为“officeDocument”的关系。
7.根据权利要求1所述的方法,其中,所选择的组成部分的子集不包括命名为“custom.xml”的文档。
8.根据权利要求1所述的方法,还包括:
将所述规范字节流的总散列值存储在记录中;
选择第二多个组成部分的第二子集;
对第二结构化文档的第二多个组成部分进行排序;
针对第二组成部分的子集中的每一个生成第二组成散列值;
将每个第二散列值转换成第二字节数组,并将所述第二字节数组附加至第二规范字节流;
计算所述第二规范字节流的第二总散列值;以及
如果所述第二规范字节流的第二散列值与所述记录中的总散列值匹配,则确定所述结构化文档与所述第二结构化文档基本上相同。
9.一种包括可执行软件指令的非暂态计算机可读介质,所述可执行软件指令在被执行时:
选择结构化文档的多个组成部分的子集;
对所述组成部分的子集进行排序;
针对所述组成部分的子集中的每一个生成组成散列值;以及
将每个组成散列值转换成字节数组并将所述字节数组附加至规范字节流。
10.根据权利要求9所述的介质,其中,所述结构化文档是OOXML文件,所述OOXML文件是ZIP存档,并且所述多个组成部分中的每一个是文件。
11.根据权利要求9所述的介质,还包括指令,所述指令在被执行时计算所述规范字节流的总散列值。
12.根据权利要求9所述的介质,其中,所选择的组成部分的子集不包括以下日期中的任何日期:
创建所述结构化文档的日期;
上次打印所述结构化文档的日期;
上次编辑所述结构化文档的日期;以及
上次打开所述结构化文档的日期。
13.根据权利要求10所述的介质,其中,所选择的组成部分的子集包括命名为“_rels\.rels”的关系文件,其中,所述关系文件包含类型为“officeDocument”的关系。
14.根据权利要求9所述的介质,其中,所选择的组成部分的子集不包括命名为“custom.xml”的文档。
15.根据权利要求9所述的介质,还包括指令,所述指令在被执行时:
将所述规范字节流的总散列值存储在记录中;
选择第二多个组成部分的第二子集;
对第二结构化文档的第二多个组成部分进行排序;
针对第二组成部分的子集中的每一个生成第二组成散列值;
将每个第二散列值转换成第二字节数组,并将所述第二字节数组附加至第二规范字节流;
计算所述第二规范字节流的第二总散列值;以及
如果所述第二规范字节流的第二散列值与所述记录中的总散列值匹配,则确定所述结构化文档与所述第二结构化文档基本上相同。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063111237P | 2020-11-09 | 2020-11-09 | |
US63/111,237 | 2020-11-09 | ||
PCT/US2021/058514 WO2022099163A1 (en) | 2020-11-09 | 2021-11-09 | Unique content determination of structured format documents |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116685973A true CN116685973A (zh) | 2023-09-01 |
Family
ID=78822246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180075686.9A Pending CN116685973A (zh) | 2020-11-09 | 2021-11-09 | 结构化格式文档的独特内容确定 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20240005043A1 (zh) |
EP (1) | EP4241191A1 (zh) |
JP (1) | JP2023548710A (zh) |
CN (1) | CN116685973A (zh) |
WO (1) | WO2022099163A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115543920B (zh) * | 2022-11-29 | 2023-08-01 | 北京微步在线科技有限公司 | 一种文件格式检测的方法、装置、电子设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8869299B2 (en) * | 2009-03-04 | 2014-10-21 | Titus Inc. | Method and system for generating trusted security labels for electronic documents |
-
2021
- 2021-11-09 CN CN202180075686.9A patent/CN116685973A/zh active Pending
- 2021-11-09 EP EP21820383.4A patent/EP4241191A1/en active Pending
- 2021-11-09 JP JP2023527982A patent/JP2023548710A/ja active Pending
- 2021-11-09 US US18/250,644 patent/US20240005043A1/en active Pending
- 2021-11-09 WO PCT/US2021/058514 patent/WO2022099163A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022099163A1 (en) | 2022-05-12 |
US20240005043A1 (en) | 2024-01-04 |
EP4241191A1 (en) | 2023-09-13 |
JP2023548710A (ja) | 2023-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111753500B (zh) | 版式化后的电子表单与ofd合并展现及目录生成的方法 | |
US8756489B2 (en) | Method and system for dynamic assembly of form fragments | |
US7734995B1 (en) | Systems and methods for assembling form fragments and templates into a form package | |
JP5060043B2 (ja) | 代替フォーマットを有する文脈自由な文書部分 | |
US7779353B2 (en) | Error checking web documents | |
US7783971B2 (en) | Graphic object themes | |
US7086042B2 (en) | Generating and utilizing robust XPath expressions | |
US20060277452A1 (en) | Structuring data for presentation documents | |
US7752224B2 (en) | Programmability for XML data store for documents | |
RU2358311C2 (ru) | Документ текстовой обработки, хранящийся в едином файле xml, которым могут манипулировать приложения, понимающие язык xml | |
US20060190815A1 (en) | Structuring data for word processing documents | |
EP1696347A1 (en) | Data store for software application documents | |
WO2006102512A2 (en) | Change control management of xml documents | |
US20070067336A1 (en) | Electronic publishing system and method for managing publishing requirements in a neutral format | |
US20080313120A1 (en) | Enabling validation of data stored on a server system | |
CN116719784B (zh) | 多ofd版式文件弹性聚类组合阅读的装置 | |
WO2009074974A1 (en) | System and process for producing a two-layer document, and a two-layer document produced accordingly | |
US20110320413A1 (en) | Detection of Obscured Copying Using Discovered Translation Files and Other Operation Data | |
US7461337B2 (en) | Exception markup documents | |
US20240005043A1 (en) | Unique Content Determination of Structured Format Documents | |
US20060136816A1 (en) | File formats, methods, and computer program products for representing documents | |
US20070061351A1 (en) | Shape object text | |
US7921358B2 (en) | Automatic package conformance validation | |
US10956659B1 (en) | System for generating templates from webpages | |
US20080263070A1 (en) | Common drawing objects |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |