CN1132372A - 对软件和数据的有效及安全的更新 - Google Patents
对软件和数据的有效及安全的更新 Download PDFInfo
- Publication number
- CN1132372A CN1132372A CN95120585A CN95120585A CN1132372A CN 1132372 A CN1132372 A CN 1132372A CN 95120585 A CN95120585 A CN 95120585A CN 95120585 A CN95120585 A CN 95120585A CN 1132372 A CN1132372 A CN 1132372A
- Authority
- CN
- China
- Prior art keywords
- version
- instruction
- file
- data
- copy
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及从较旧版本向较新版本更新数据文件的设备,本发明比较较旧版本和较新版本,并且推导出一个变换,该变换含有有关相似及差异的信息。然后本发明利用该变换处理较旧版本以推导出较新版本,并无须参考较新版本本身。由于通常该变换不包含着较新版本的全部内容,本过程是高度抗对更新数据的窃听的。
Description
本发明涉及远程地更新软件或数据,或者同时远程地更新软件和数据,的方法,本方法减少了数据的发送量并且不太易受截取。附录中含有本发明使用的源码。
经公用电话系统的计算机之间的电子数据传输要求快速和安全。在传输前压缩数据可以提高传输速度,而利用加密可以保护安全。数据压缩对于加密也是有好处的,因为数据加密减少了数据源中的冗余并且提高了对于破坏企图的抵抗性。
但是,如果数据文件被压缩和被加密,结果的压缩和加密数据是基于单源的。基于单数据源的数据压缩和加密是不理想的。除了当在数据中存在大量的冗余之外,不能实现很好的压缩,并且具有现代密码分析方法的几台高速计算机一起工作可以揭开大多数的加密数据。
在许多情况下,经常在对数据进行少量的改变之后发送一个初始数据源的几个较新的版本。少量改变的这个事实意味着所有的版本在本质上是相似的。可以利用固有相似性来进行极少的变换计算,以把一个版本变换成另一个版本。
计算这种变换的进程称之为数据差分。因为数据差分减少了所需通信的数据量,数据差分提高了传输速度。因为不具有较老版本的窥探终端不能从传输的数据中推绎出许多信息,数据差分还提高了保密性。
以前已经研究过几种压缩和差分技术。在J.Ziv和A.Lempel发表在IEEE Transactions on Information Theory,23(3):pp.337-343,May,1977上的“A Universal Algorithm for Sequential Datacompression”的文章中描述一种压缩单数据文件的技术。该技术是通过分析数据序列,并且通过在每个位置上如有可能识别出一个和已分析的部分里的另一个段相匹配的最长段来工作的。如果找到这样的段,利用匹配位置和匹配长度来编码这个段。未匹配的数据则按原样输出。
对该算法的实现是1984年8月7日由W.L. Eastman.A.Lem-pel和J.Ziv提出的美国专利4,464,650的主题。在解压缩上East-man-Lempel-Ziv压缩法是很慢的,因为在解压缩中该方法需要做和压缩过程大致相同的工作。并且该方法不应用数据差分。
在UNIX系统上可以利用“diff”程序计算文本(非二进制的)文件之间的差分,该程序产生一组必须删除或者增加的行以把第一个文件变换成第二个文件。“diff”法能够产生非常多的变换,因为文本行中小的改变造成的各种变换都看成为是不同的。另外,它只能工作在文本文件上,因此它的应用范围是受限制的。
由Walter F.Tichy在ACM Transactions on Computer Systems,2(4):pp.309-321,November,1984上发表的“The String-to-String Correction Problem with Block Moves”文章中描述了一种算法,这种算法计算一组称之为块移动的指令以把数据文件的一个版本变换成另一个版本。一个块移动是第二版本中的一个数据段,其和第一版本的另一个段相匹配。该算法在本质上是不现实的并且也不利用第二版本中固有的任何冗余的这个有利条件来把从第一版本构造第二文本所需的变换变为最小。
在本发明的一种形式里,计算机程序比较文件的第一版本和第二版本(较新版本),并且产生一指令序列。这些指令允许基于第一版本进行第二版本的复制。
这些指令为二种类型。一种类型为COPY指令,其命令把一规定的字符序列复制到一个正在构造的文件里。该规定的序列可以驻留在第一版本里,也可以驻留在正在构造的文件里。
第二种类型的ADD指令,其命令添加一字符序列,这一字符序列是伴随ADD指令的。当按顺序执行这些指令时,它们产生一个串联序列,经过复制和添加产生第二版本的复制品。
图1示意说明本发明如何应用于计算机之间的数据通信。
图1A至1I通过类推说明本发明所采用的原理。
图1J说明本发明的安全状况。
图2给出一个数据集的两个版本以及把一个版本变换为另一个版本的指令集的例子。
图2A至2E说明图3中描述的过程的操作。
图2F至2H说明图5中所描述的过程的操作。
图3说明在伪C语言下的译码过程。
图4表示图2的指令的实际编码。
图5说明译码过程。
图6说明图5中所采用的INSERT过程。
图7说明图5中所采用SEARCH过程。
图8说明图5中所采用的EXTEND过程。
图9说明图2的示例VERSION1和NERSION2数据的插入位置。
图10表示图4的编码指令的保密版本。
一个简化的类推将解释本发明的一些更基本的特性。在后面,从题为“本发明”的一节开始,将给出对实现本发明的部分计算机代码的技术说明。
类 推
假定一位报纸记者和一位报纸编辑共同写一篇文章,但是他们位于不同的地点。假定他们一起写出了如图1A中所示的VERION-1。假定记者进行了如图1B所示的修改,产生了图1C中所示的VERSION2(图1C中的方框指示修改的位置),并且希望把该版本发送给编辑。下述进程允许记者在不必发送VERSION2的全部内容的情况下把VERSION2发送给编辑。
过 程
首先,记者对VERSION1的各个词分配一个位置,如图1A如示。图中有50个位置,对应于50个词。
然后,记者确定VERSION1的词汇表。如图1A中所示,词汇表是所使用词的一个列表或表。注意在词汇表里各个词只出现一次。例如,位置18上的词“them”不进入该词汇表,因为这个词以前已在位置16上出现过。
为了确保各个词仅仅出现一次,在每个词进入时,记者进行检查以看看在表上是否已经存在这个词。例如,该记者登记第一词,“when”。然后,记者取位置2上的词,“buying”,并且把它和词汇表的第一个词,即“when”相比。不存在相匹配,所以记者把“buying”登记到词汇表的位置2上。
按这种方式记者继续做下去直至到达位置18处的词“them”。当对照词汇表上的前17个词条进行检查时,记者发现“them”和词汇表的位置16上的“them”相匹配。因此,后一个“them”不被登记到词汇表上,因为它和前一个“them”一模一样。
当对VERSION 1的最后一个词进行检查对照时,该词汇表成为完整的。总长度为50个词的VERSION 1只含有38个不同的词,如由词汇表的长度所指示的那样。
接着,记者建立VERSION 2的词汇表,如图1C中所示。除了用NEW WORDS指示的三个增加的词外,VERSION 2具有和VERSION 1相同的词汇表。现在记者已经准备好向编辑发送VER-SION 2。
通过发送下述六条信息或者六条指令,记者发送VERSION 2,通过图1D至1I中的各图将解释各条信息或指令;
1.COPY 21
2.ADD 1 Hawaiian
3.COPY 33
4.ADD 1 all
5.COPY 378
6.ADD 2 a brick
指令 1
通过预先安排,记者和编辑把一个POINTER(指针)设置在位置1上,如图1D中所示。第一条指令“COPY 21”意思是“从VER-SION 1的位置1上开始COPY(复制)2个词的序列”。(在各条指令里,内含着把词放在VERSION 2的POINTER处。)在图1D中说明该操作。
注意其语法为:
COPY[词数,VERSION 1里的起始位置]
在这条指令之后,编辑按COPY指令中的词数移动POINT-ER,在本情况下词数为2,现在POINTER的位置如图IE中所示。
指令 2
指令2表示“ADD 1 Hawaiian”,它的意思是“添加一个词‘Hawaiian′。”在图IE中说明该操作。注意其语法为:
ADD[词数、各词本身]
在这条指令之后,编辑按ADD指令中的“词数”移动POINT-ER,在本情况下词数为1。现在POINTER的位置如图1F中所示。
指令 3
第三条指令“COPY 33”意思是“从 VERSION 1的位置3开始复制3个词的序列。”。在图1F中说明该操作。注意其语法是和指令1的语法相同的。
在这条指令之后,编辑按COPY指令中的词数移动POINT-ER,在本情况下词数为3。现在POINTER的位置如图1G中所示。
指令 4
指令4表示“ADD 1 all”,其意思是“添加一个词‘all’。”。在图1G中说明该操作。
在这条指令之后,编辑按ADD指令中的词数移动POINTER,在本情况下词数为1。现在POINTER的位置如图1H中所示。
指令 5
第五条指令“COPY 37 8”意思是从VERSION的位置8开始复制37个词的序列。在图1H中说明该操作。注意其语法和指令1的语法相同。
在这条指令之后,编辑按COPY指令中的“词数”移动POINT-ER,在本情况下词数为37。现在POINTER的位置如图1I所示。
指令 6
指令6表示“ADD 2 a brick”,其意思是“添加2个词、‘abrick’”。在图1I中说明该操作。现在已完成VERSION 2的构造。
重 要 特 点
图1C中所示的VERSION 2具有43个词,这些词包括163个字符。而六条指令组包括27个字符,再加上指令本身(即,COPY和ADD)。如果各条指令和各个字符按一个字节编码,则总信息等于27+6个字符,或者33个字符。发送33个字符比起发送163个字符需要少得多的时间。
本 发 明
上面的类推只是一种简化情况,不能说明本发明的所有特性。图2表示一个文件的二个VERSION(版本),并加上一个TRANS-FORMATION(变换),TRANSFORMATION允许经过VERSION1和TRANSFORMATION本身的结合构造VERSION 2。图3所示的过程完成这种重构,现在说明这个过程。首先,详细说明总的模式。
作为背景,应该认识到四个重要特点。一,各VERSION中的各个字符占有一个已编号的位置,如图2A中所示,作为例子,在VERSION 1中,第一个“a”占据位置0。第一个“b”占据位置1,等等。
二,VERSION 2中的编号位置从VERSION 1里的最高编号位置的后面开始。这样,因为VERSION 1的最高位置是“1S”,VER-SION 2从“16”开始。
三,一个指针(它是图3的过程中的一个变量)指示当前的位置,如图2A中所示。
四,TRANSFOMATION包括指令。有二种类型的指令,即ADD和COPY。通过说明如何从VERSION1,构造VERSION 2将解释这两种指令的操作。
指令 1
在图2B里,执行TRANSFORMATION的指令1。该指令“COPY 40”实际上表示“把从VERSION 1的位置0开始的4个字符COPY(复制)到VERSION 2的指针处”(下边带底线的词代表指令中的词,下同)。图2B示意该操作。
在该指令中,重要的在于,用于生成VERSION 2的字符是从VERSION 1中得到的,而不是从指令本身里得到的。从而,如果是通过电话传输获得该指令的,窃听者不能得到可用于构造VER-SION 2的信息,因为假定窃听者是不能接近VERSION 1的。
其语法是
COPY[字符数、起始位置]。
指令 2
在图2C中执行指令2。该指令“ADD 2x,y,”实际上表示“从指针处开始把2个字符x和y ADD(添加)到VERSION 2里”。
在该指令里,重要的在于,用于生成VERSION 2的字符是从该指令本身里得到的。因此,窃听者的确获得了一些有关VERSION2的信息。但是,在实际中,预计这种类型的指令是和许多COPY类型的指令(它们不包含信息)混合在一起的,从而窃听者不能得到有关VERSION 2的重要信息。
然而,从理论上有可能TRANSFORMATION只含有ADD指令,在这种情况下,窃听者将整体地获得VERSION 2。或者有可能ADD指令的数量非常大。为了防止窃听者从这些ADD指令中得到信息,提供了一种加密选择,后面将对它进行讨论。
ADD指令的语法是:
ADD[字符数、各字符本身]
指令 3
在图2D中执行指令3。该指令“COPY 6 20”实际上表示:
产生一个COPY(复制),其为
6字符长,利用存在于位置
20和指针之间的字符,并把它们置放在指针处。
该结果是序列xyxyxy,如所示。
(作为另一个例子,如果COPY语句读出“COPY 6 19”,从而实际上它将表示:
产生一个COPY(复制),其为
6字符长,利用存在于位置19(不是20)和指针之间的字符,并把它们置放在指针处。
添加到指针处的序列将是dxydxy,因为存在于位置19和指针之间的序列是dxy。
在本条指令中,重要的在于,用于产生VERSION 2的字符是从VERSION 2自身里获得的。从而,现在看出COPY指令利用两个源,取决于所规定的地址。在本指令里,地址(即“COPY 6 20”里的“20”)表示VERSION 2(即该地址大于15),VERSION 2是该命令的源。
相反,如果地址是15或者更小,则将把VERSION 1用作为源。
事实上,本方法允许我们利用ADD指令扩充词汇表。这样,当发现VERSION 2含有(a)VERSION 1不含有的而(b)已包括在扩充后的词汇表里的(因为早些时候已经添加了)的字符,则可利用COPY指令。这种COPY指令具有两个好处。
一个好处是只要指出要插入字符的总量和起始位置COPY指令能够插入大量的字符。相反,ADD指令要求发送这些字符本身,这必然造成更长的传输。
第二个好处在于,如上面所讨论的那样,COPY指令不含有任何信息,除非该指令的截取者恰好同时还拥有VERSION 1。
指令 4
在图2E中执行指令4。该指令“COPY 5 9”实际上表示:“从VERSION 1的位置9开始COPY(复制)5个字符”。该条指令类似指令1。
参考图3的过程
图3表示一个过程,通过这个过程计算机能从VERSION 1和TRANSFORMATION的组合中构成VERSION 2。
在图3里,行2初始化变量C,变量C用于计算图2B-2E中所示的指针。在行9、13和14里适当地计算指针。
指令 1
在图3的行13里执行图2中所示的TRANSFORMATION的指令1(COPY 4 0)。指示源数据起始位置的变量“p”是从该条指令中得到的并且等于0。因为“p”小于“n”(行12),源位于VERSION 1中。因此,由于IF语句执行行13,并且从VERSION 1中的位置VERSION 1+p处复制数据,该位置为位置。指示字符量的变量“s”是从行7里的指令中得到的并且等于4。
指针在行16更新。
指令 2
由于行8上的IF语句,在行9执行指令2(ADD 2x、y)。该指令把长度为“s”(其等于2)的字符序列放置到位置VERSION 2+C处。在行16更新指针。
指令 3
由于在行12中“p”(从指令3得到并等于20)小于“n”,在行14执行指令3(COPY 6 20)。该复制操作把VERSION 2作为源,以VERSION 2+c为起点。该复制操作取长度为s的字符序列(变量s为指针减20,“20”是从该指令中得到的。)
指令 4
在行13类似于指令1执行指令4。
TRANSFORMATION的生成
图5包括一个过程,该过程一个字符一个字符地检验各VER-SION并且产生一组指令,这组指令允许从VERSION 1和这组指令的结合中构成VERSION 2,这组指令称为一个变换。上面讨论了图2的变换。该过程所采用的一般方法如下。
第一次运行
首先处理VERSION 1。在图2F的几处显示着VERSION 1。图5的代码询问从位置0开始的四字符序列是否和从前一个位置开始的四字符序列相符。当然,因为在位置0之前什么都不存在,回答为否。这样,位置用一个脱字符号标记,如用RUN 1标志的行中所示。
第二次运行
在第二次运行时,代码询问类似的问题,即从位置1开始的四字符序列是否和前面的位置上开始的四字符序列相符。回答为否,并在位置1处设置一个标记。
第三次和第四次运行
按类似的方式,在位置2和3设置标记,结果造成图2F的RUN 4行所示的标记。
第五次运行
第五次运行产生不同的结果。在第五次运行中,代码询问惯例的问题:从位置4开始的四字符序列是否和从以前的一个位置上开始的四字符序列相符?回答为是,即和位置0开始的四字符序列匹配,如标志为RUN 5的行中所示。不再标记位置4,并且调用EX-TEND函数(图5中的行16)。
EXTEND函数询问匹配延伸多长。它询问匹配块之后的下一个位置(匹配块占据位置4-7,故该之后的位置为位置8)是否具有与位于四位置之前的位置匹配。回答为是,如试探TA中所示。
然后它询问匹配块之后的第二个位置,即位置9,是否和位于其四位置之前的位置匹配。回答仍就为是,如试探TB所示。一直继续这种询问直到在试探TE中到达一个不能达到这种匹配的位置。
这样EXTEND函数确定匹配延伸八个位置,从位置4到位置11。根据该代码的逻辑,标记延伸匹配的最后三个位置,即“RUN 5RESULT”一行中的“BCD”。
第六次运行
第六次运行询问从位置12(即最右边的“e”)开始的四字符序列是否和从前面一个位置上开始的任何四字符序列匹配。回答为否,并在位置12上置放一个标记,如标明为RUN 6的行中所示。
结 果
结果表示在图2F的底部上,并且用RESULT标明。两个重要的特点如下:
一,如下面将解释的那样,标记不但指示可能用于构造VER-SION 2的序列的开端,同时还标记该序列的结尾。
二,如所示,存在着未标记的区域。对用于构造VERSION 2的序列的搜索决不从这些区域中开始,尽管搜索可以从这些区域的外部开始并且然后侵入到这些区域里。这样,因为淘汰了一些初始搜索点,从而减少了总的搜索时间。
对VERSION 2的处理
前四次运行
接着处理更新版本VERSION 2。如图2G中所示,代码询问从位置16、17、18和19开始的四字符序列是否和在以前的位置上开始的四字符序列相匹配。从位置16开始的四字符序列和从位置0开始的四字符序列相匹配,但定在后三个位置上则不匹配,所以标记位置17、18和19,如图2G的上部所示。
EXTEND函数发现没有延伸的匹配。图5的代码转移到行29,在行29中发出“COPY 4 0”指令,该指令已在前面得到解释并且表示在图2中。
总结果用标明为OUTPUT的箭头表示。标记了三个字符并且发出一条COPY指令。重要的是要注意在后面把这些标记的字符对待为搜索初始点,和在VERSION 1中的标记字符恰好一样。
第五次运行
图5的代码询问从位置20(该位置驻留在VERSION 2里,如图2G中标明为RUN 5的一段中所示)开始的四字符序列“xyxy”是否和在前面的一位置上开始的四字符序列相匹配。代码从包括现在存在于VERSION 2里各个标记上开始搜索。
而且,在每个标记上,代码不仅前向地而且后向地搜索(出于简化,前面没有提及双向搜索)。总的搜索由图2G里的RUN 5表示。因为搜索(a)从各标记开始并且(b)双向地搜索四个字符,所以检验从试探T1至T12的每四字符序列。此外,从VERSION 2里的各标记位置即位置17、18、19和20上开始进行类似的搜索。
没有找到匹配,因此标记位置20上的“x”。
第六次运行
图5的代码询问从位置21(其位于VERSION 2里)开始的四字符序列“yxyx”是否具有在前面的位置上开始的匹配。和在位置20上一样,代码从包括VERSION 2里的各个标记上开始双向地搜索。没有找到匹配,所以标记位置21。在图2H的右上部分表示当前的标记状态。
第七次运行
图5的代码询问从位置22(其位于VERSION 2里)开始的四字符序列“xyxy”是否具有在前面的一位置上开始的匹配。回答是有,在位置20上。从而,不标记位置22,如图2H中所示,并且进入到EXTEND函数(图5的行16)。
EXTEND函数按照和图2F有关的方式检验出该匹配延伸到图2H里的位置27。因此,标记该延伸匹配的后三个位置,产生图2H的左下方的方框里所示的标记状态。
此时,该逻辑进入图5的行29,在该行发出两条指令“ADD 2x,y”和“COPY 6 20”。(行29中的变元“add”和“c”表示ADD指令。变元“pos”和“len”表示COPY指令。)
第八次运行
代码询问从位置28(见图2I里的OUTPUT方框)开始的序列“bcde”是否具有在前面的一位置上开始的匹配。回答是有,在VER-SION 1的位置9上(见图2G左上方)。现在调用EXTEND函数,其确定该匹配延伸到另一个字符“f”上。
然后,行29上的代码发出指令“COPY 5 9”。已经产生了图2的四条指令,现在可以从VERSION 1并且加上这些指令来重造VERSION 2。
特 性
上面的概述说明了下述原则:
一、一旦确定一个位置代表着一个前面的相匹配序列,不标记该位置,并且相应地,不从该位置上启动随后的搜索,因为这种启动将是重复的。从而,得到了减小的搜索位置集(如果可能的话)。
二、VERSION 2是从两种类型的源构造的,即,(a)从VER-SION 1和VERSION 2的一个中复制序列以及(b)向VERSION 2添加序列。而且,所添加的序列能够在以后应用于复制操作中。
从另一个角度来看,如果第一个用户拥有VERSION 1,而第二个用户拥有VERSION 1和VERSION 2,如果第二个用户识别下述的字符序列则第一个用户可以构造VERSION 2的复制品:
(a)从第一个用户的VERSION 1中复制的字符序列,(b)添加到第一个用户的VERSION 1上的字符序列,以及(c)从第一个用户时VERSION 2的复制品中复制的字符序列。
三、各个带标记的位置代表着可能的词汇表中词的起始点。在图1A中表示了类似的词。但是,和图1A的词汇表不相同,各个带标记位置的词汇表代表着许多有可能的序列。
例如,假设VERSION 1为如下:
a b c d e f g h i j k 如果标记大写字母F(位置6),则它可以代表下述序列:
f fg fgh fghi fghij fghijk这些序列可以包含其它加标记的位置。
这样,单个带标记的位置可以代表多个可复制到VERSION 2里的序列。从而,带标记的位置能够出现在多种COPY指令里。例如,“COPY 3 6”意思是COPY(复制)“fgh”。“COPY 5”意思是COPY(复制)“fghij。
保 密 状 况
如上面所述,ADD指令含有作为VERSION 2的内容的信息,并且该信息可能需要安全保护。在图1J中表示一种保密的方法。
图2中所发送的ADD指令(“ADD 2 xy”)修改为包含着指向VERSION 1中的一个位置的指针。该修改后的指令在图1J中标明为INSTRUCTION SENT。该指针为“2”,其指出“c”。
然后所发送的信息(即,代表“x”和“y”的字节)和从“c”开始的数据进行异或(EX-OR)运算。图1J的左面表示该EX-OR运算。所发送的指令为“ADD 2 2”加上EX-OR运算的结果。对于窃听者EX-OR结果不含有带值的信息,这是因为窃听者不能访向VER-SION 1。
在图1J右面表示的所接收到的指令中所含有的数据和VER-SION 1的相同数据进行EX-OR(异或)运算,即该相同的数据是从“c”开始的。该EX-OR运算恢复了原始数据,即“x,y”。
该过程揭示了EX-OR运算的特性,即,第一字和第二字进行EX-OR运算产生第三字。第三字第二字进行EX-OR运算恢复第一字。
从而,从所发送的指令
ADD 2 2 [EX-OR(异或)结果]可以得到所需的指令
ADD 2 x、y
重要事项
1.COPY和ADD指令出现的次序当然是重要的。如果按不同次序混杂它们,将得到不同的VERSION 2。
从另一个观点来看,该顺序本身就是一种类型的信息。这个顺序可以看成为是指令的排列。就象英文字母的排列创造词一样,指令的排列包含信息,它们传送信息。
当然,如果包括着能够重建其顺序的信息,可以按混杂的次序发送各条指令。例如,各条指令可被编号。
不论是如何得到适当指令序列的执行的,该执行通过串联处理产生VERSION 2的复制品。即,回到图2B至图2E的例子:
1.首先把“abcd”写到复制品里(图2B)。“abcd”是从VERSION1中取出的。
2.然后串联“xy”(图2c)。“xy”是从VERSION 1中得到的。
3.接着串联“xyxyxy”(图2D)。“xyxyxy”是从VERSION 2中得到的。(备择地,可在步骤2中从VERSION 1中取出四对“xy”并串联起来。但是,这是一种效果较低的做法。)
4.接着串联“bcdef”(图2E)。“bcdef”是从VERSION1中得到的。
2.进一步考虑上述的第一条事项,发明者要指出各条COPY和ADD指令中包括着要被复制或者被添加的信息的长度。这样,对于任何一条给定的COPY或ADD指令,基于前面总的长度,能够很快地计算VERSION2中出现复制(COPY)或添加(ADD)操作的地址。(因为其指针是根据这些长度计算的,图3的代码说明了这一点。)
3.本发明可以用于更新任何类型的数据文件。它不限制于文本文件,也不限于其它特殊类型的文件。通常它可以处理二进制文件。
文件包括着字符。一般各字符是用数据字节来表示的。因为每个字节包括8位,用一个字节可以代表28或256个可能的字符。
在“文本”文件里,不需要使用这些全部可能的组合。只需要使用那些代表着字母、数字以及一些标点符号的组合。
在“二进制”文件里,使用所有的可能的256种组合。本发明能够处理二进制文件。相反,现有技术中的差分程序只能处理文本文件。
4.本发明不限制于从一个存储的VERSION 1中远程地复制VERSION 2。此外,通过利用ADD和COPY指令,可以把一个程序的较新版本存储在一个单独的位置上,而不需要把这个版本全部地存储起来。这种方法将节省存储空间。当需要重建这个版本时,可以执行图3的程序。
5.重建文件的版本不必必须是一个较早文件的从时间顺序上来讲的一个较晚的实际文件的版本。例如,可以从VERSION 2重建VERSION 1。
技 术 讨 论
现在给出对图3和图5给出的代码的更技术性的讨论。
概 述
数据文件可被看成是一序列字节。实际上在所有的现有计算机上,就存储、通信和存储器内数据处理而论,字节是能够被有效压缩的最小自然单位。尽管“数据文件”这个术语经常意味着存储在磁盘上的文件,本发明还允许这种字节序列为主存储器上的一些段。
图1表示利用本发明在两个计算机之间保持数据同步的一个例子。首先,在源计算机上,比较两个数据版本,VERSION1和VER-SION2,以产生把VERSION1变成VERSION2的一个变换。通过一些通信通道把该变换发送到目标计算机上。然后在该目标计算机上,利用该变换和VERSION1的本地复制重建VERSION2。
变换指令的编码和译码
由本发明计算的变换由两种类型的指令COPY和ADD的序列组成。在重建VERSION2的过程中,COPY指令定义要被复制的某些已存在数据段的位置和长度,而ADD指令定义要被添加的数据段。图2表示两个数据文件的一个例子,在这个例子中VERSION1包括字节序列“abc dab cda bcd efgh”(为了清楚在这里增加了空格)。VERSION2包括序列“abc dxy xyx yxy bcdef”。这样,VERSION1的长度为16,而VERSION2的长度为17。图2中所示的变换表示从VERSION1再造VERSION2所需的指令。注意我们采取了这种惯例,即VERSION1里的位置是从0开始编码的,而VERSION2里的位置是从VERSION1的长度开始编码的。例如,图2变换中的第三条指令是一个COPY指令,该指令从VERSION2的位置4开始复制6个字节,该起始位置编码为20。
图3表示该过程通常是如何实现一个版本的重建的。行1把变量“n”初始化为VERSION1的长度。行2把VERSION2里的现行位置“c”置为0。行3开始一个循环,当在行5中检测出文件结束条件之后该循环在行6中结束。行4调用函数readinst( )以读出一条指令。行7利用函数readsize( )读出复制量或数据量。行8和9进行检验以查明该指令是否为一条ADD指令。如果是,则从现行位置C开始把数据读入VERSION2。行10至15通过读入位置代码处理一条COPY指令,然后适当地从VERSION1或VERSION2的一个中执行复制运算。行16用最新重建数据的长度增加VERSION2中现行复制位置。COPY( )函数是一个把磁盘存储器(或主存储器)的一个区域上的数据复制到另一个区域上的简单函数。但是,必须根据某些说明COPY和ADD指令及它们的参数是如何编码的具体定义来定义readinst( )、readsize( )、readpos( )和readdata( )函数。
当把图3的过程应用到图2A的例子上时,我们看到在译码中存在着四个步骤。第一步骤从VERSION1中位置0开始复制四个字节“abcd”。第二步骤添加2个数据字节“xy”。第三步骤从VERSION2中自其位置4起复制6个字节(根据我们的惯例从0计数并编码为20)。请注意在该步骤的起点处,当只有两个字节“xy”可用于复制时仅仅重建VERSION2的最初6个字节“abcdxy”。但是,因为数据是自左向右复制的,一旦一个字节被复制该字节将被构造。第四即最后的步骤从VERSION1的位置9上复制5个字节“bcdef”。
我们现在给出对COPY和ADD指令的编码的说明。对于这些指令的具体实施方式的选择在于根据发明者们的经验它们对许多不同类型的数据运行良好。给出这些说明之后,可以直接地实现上述的readinst( )、readsize( )和readpos( )函数。各条指令是从一个控制字节开始编码的。控制字节的八位被划分成两部分。前四位代表从0至15的数,每个数代表一种类型的指令并且是某些辅助信息的编码。下面列举前四位的前10个值:
0:一条ADD指令;
1、2、3:一条COPY指令,带有在QUICK超高速缓存里的位置;
4:一条COPY指令,带有编码为SELF的位置;
5:一条COPY指令,带有编码为对HERE的差分的位置;
6、7、8、9:一条COPY指令,带有从RECENT超高速缓存编码的位置。
QUICK超高速缓存是一个尺寸为768(3×256)的阵列,该阵列的每个下标包含着当前COPY指令的位置的值P,P对768的模为该阵列下标引。在输出(在编码期间)或者处理(在译码期间)各条COPY指令之后更新该超高速缓存。类型1、2和3的COPY指令的后面紧跟着1个字节,该字节的值为从0至255,为了计算出存储着实际位置的阵列下标必须对该值分别加0、256或512。
类型4的COPY指令具有编码为字节序列的复制位置。
类型5的COPY指令具有复制位置及编码为字节序列的现行位置之间的差分。
RECENT超高速缓存是一个带有4个下标的阵列并且存储四个最近的复制位置。一旦输出(在编码期间)或者处理(在译码期间)一个COPY指令,该指令的复制位置替代该超高速缓存里的最老的位置。类型分别是6、7、8、9的COPY指令分别对应于超高速缓存下标1、2、3、4。其复制位置保证大于存储在对应的超高速缓存下标里的位置,并且只对该差别进行编码。
对于ADD指令和类型从1至9的COPY指令,如果控制字节的后四位不为零,则其编码所涉及数据的尺寸。如果这些位为零,则用后继字节序列编码对应的尺寸。
本编码方法的一种结果是在一条ADD指令的后面永远不跟着另一条ADD指令。经常,ADD指令所其有的数据尺寸小于或等于4,并且后继的COPY指令也是小的。在这种情况下,把这两条指令合并到单个控制字节里是有利的。前四位的从10到15的值对这样的指令合并对进行编码。在这种情况下,控制字节后四位中的前二位对ADD指令的尺寸编码而剩余的二位对COPY指令的尺寸编码。下面列举前四位的从10至15的值:
10:合并的ADD/COPY指令,其复制位置用SELF编码;
11:合并的ADD/COPY指令,其复制位置用对HERE的差分编码;
12、13、14、15:合并的ADD/COPY指令,其复制位置从RE-CENT超高速缓存编码。
图4表示图2中所示变换的四条指令的编码。对于各条指令,显示了控制字节的全部八位。例如,第二个控制字节的前四位为0,表示该字节编码一条ADD指令。该控制字节的后四位表示ADD指令的尺寸为2。在该控制字节之后跟着两个数据字节“xy”。所有约三条COPY指令都是用SELF类型编码的,意味着它们的复制位置是用紧跟着控制字节的字节(具有所示的值)编码的。所有这些指令的尺寸参数足够小,从而它们都可以编码在控制字节中。该小例子表示长度为17个字节的VERSION2能够用一个只有9字节的变换编码。
快速计算匹配段
图5表示把VERSION2划分成段并且用COPY和ADD指令编码这些段的方法。请注意,对于本编码方法,短长度的匹配是用处不大的,因为这种匹配占据着的编码空间至少和所匹配的数据一样大。从而可以把该匹配方法不用于短的匹配。我们所采用的最小匹配长度为4并且用编码过程的主体里的变量MIN来代表。
图5的行1把搜索表T初始化为空。为了有效,T保持为一个散列表,并且键接起来以供争用。这种数据结构是标准的,并且在任何一本数据法构和算法的教科书中得到说明,例如参见1974年由Addison-Wesley公司出版的由A.Aho J.Hopcroft和J.Ullman合著的“The Design and Analysis of Computer Algorithms”的第111-112页。
表T含有在两个版本中选出的一些位置,这些位置用过程in-sert( )插入并且用于过程search( )和extend( ),以便进行最长匹配数据段的快速搜索。行2和3调用过程process( )以从VER-SION1和VERSION2中选出插入到表T里的位置。在对VER-SION2的处理期间,还产生COPY和ADD指令。
行4至45定义过程process( )。行5和行6把变量“n”和“m”初始化为VERSION1的长度和正在处理的版本的长度。行7把正在处理的版本的现行位置“c”初始化为0。行8把用于ADD指令的数据起点初始化为-1(即,无)。行9和行10为从位置C起始的数据段初始化最长匹配的位置和长度。行11至42定义处理该给定版本的主循环。行12和18计算和从C起始的数据段相匹配的最长的已处理数据段。在行12调用的过程search( )寻找长度为len+1的匹配。该过程把起始于位置c+len-(MIN-1)的MIN个字节用作为关键字以搜索表T中的一个匹配位置。然后该过程反向地匹配在“seg”里的数据以及在适当版本里的数据以便查看是否该匹配覆盖着从c到c+len+1的所有情况。
如果发现一个匹配,行16上调用的过程extend( )尽可能远地延伸该匹配。行14和15对应于不存在匹配并且我们打开该搜索循环的情况。否则重复该循环以发现更长的匹配。行19和26把现行未匹配的位置c插入到表T里。
请注意如果seq在VERSION1中实际的待插入的值为c,否则的话则为c加上VERSION1的长度(其为我们前面已说明的在VERSION2中对位置进行编码的常规办法)。过程insert(T、seqp、o-rigin)把被编码的位置p+origin插入到表T里以用作为它的从版本seq里的位置p上开始的关键的MIN个字节。
当变量add尚未定义时,行20和21把变量add置为c,以指示这是一个不匹配数据段的起点。行25为该处理循环的下一次迭代把现行位置向前移1。行27和28对应于找到最长的匹配段的事件。行28和29调用过程writeinst( )以根据前面所给出的说明写出COPY和ADD指令。
当add为0或正的时,writeinst( )的前二个变元定义用于ADD指令的数据。后二个变元定义用于COPY指令的参数。该过程的工作是直截了当的,所以我们略去对它的说明。行30至36把在匹配的数据段的结尾处的MIN-1个位置插入到表T中。行37和38用匹配长度增加c并且把add复位为-1。如果不存在供处理的足够数据,行40和41中止处理。行43和44把VERSION2的任何最后未匹配的数据输出为一条ADD指令。
图6表示把一个位置插入到表T的一个过程。图6的行2指明关键字为从位置p开始的序到“seq”的MIN个字节。行3构造该编码的位置。行4把该对(key、pos)插入到表T内。
图7表示用于搜索匹配的过程。行3和4构造搜索关键字,其由现行最长匹配长度的结尾处的MIN-1个字节加上一个新的未匹配字节所构成。行5至19当试是否有可能延长匹配长度。这是通过在表T中寻找和已构成的搜索关键字相匹配的各个元素并且查开关键字位置左近的现行匹配部分是否和正被考虑的元素的对应部分相匹配来完成的。该测试在行17上实现。如果这是真的,则过程search( )在行18返回到匹配的起始位置。行20回送“-1”以表示不存在比“len”更长的匹配。
当在图5的行13上成功地调用过程search( )之后,现在知道匹配长度要比图5中的“len”值至少大1。图8表示尽可能向右延长匹配的过程extend( )。行2至10设定搜索匹配的正确序列。行11至13执行该延伸。行14回送总匹配长度。
当应用于图2的例子时,上面方法将准确地计算图2中所示的指令组。图6表示例子VERSION1和VERSION2中将要插入到表T中的位置。
增强保密性
在给定两个版本,VERSION1和VERSION2,以及一个计算用变换的情况下,只有在该变换里的ADD指令携带着来自VER-SION2的原始数据。一个窥探者可以利用这样的数据获得关于VERSION2的有用信息。在用于具有高度保密要求的情况时,为了防止信息的泄漏,可按如下修改ADD指令。首先把各条ADD指令修改为同时还具有一个复制地址,该复制地址将是从VERSION1中随机选择的某个位置,并使得从该位置起始的数据段至少和ADD数据的长度一样长。如果不可能做到这一点,可以把ADD数据分割成更小的单元。然后,在输出到该变换之前,使原始数据和从这样所选择的数据段里的数据进行“异或”运算。例如,当使用图2中的同一个ADD指令时,如果在VERSION1中所选择的位置是2,则在紧跟着控制字节之后输出该位置,并且在输出两个数据字节“xy”之前这两个数据字节“xy”先和两个字节“cd”进行“异或”运算。
在译码期间,在输出之前必须对每个数据字节进行相同的“异或”运算。这样做能够奏效是由于“异或”操作的数学性质保证当对一个字节用另一个相同的字节进行两次“异或”运算时它将保持原始值。从而,我们现在可以保证窥探者将不能从所变换的数据字节中获得任何信息,除非他(她)已经拥在VERSION1的拷贝,但该拷贝假定是安全的。
图7表示利用该更安全的方法编码后的图4的指令。现在ADD指令具有位置2。数据字节“x”和“y”分别表示要与“c”和“d”做“异或”运算。
在不违背本发明的实际精神和范围的前提下可以进行许多替代和修改。希望得到专利法保护的是由下述权利要求书定义的本发明。
Claims (8)
1.在计算机里,本改进包括:
a)用于产生指令的程序装置,其允许基于第一版本并且无须访问第二版本复制一个二进制文件的第二版本。
2.一种复制二进制文件的第二版本的方法,该第二版本是从第一版本衍生出来的,该方法包括:
a)建立一个指令序列,各条指令产生一个字符序列,把该序列指令串联起来时可复制该第二版本;并且
b)执行这些指令。
3.对于数字计算机,本改进包括:
a)第一程序装置,用于:
i)确定第一和第二文件,并且
ii)产生一指令序列,当执行时,为了复制该第二文件,这些指令把第一文件的一部分和第二文件的一部分衔接起来,并且无须访问该第二文件。
4.根据权利要求3的本改进进而包括第二程序装置,用于执行该指令序列以复制该第二文件。
5.一种保存计算机文件较新版本的方法,其包括下述步骤:
a)比较较新版本和较旧版本,并且识别
i)相同的信息,在该处较新版本和较旧版本相同,以及
ii)不同的信息,在该处较新版本不同于较旧版本;
b)存储在较旧版本中出现各相同信息的地址;以及
c)存储各不同的信息以及其在较新版本里的出现地址。
6.一种信息复制进程,其包括下述步骤:
a)在第一个地点,寻找第一文件和第二文件之间的
i)相似的
ii)差异;
b)在第二个地点,保持第一文件的拷贝;
c)把下述情况发送到该第二地点:
i)各相似的位置,
ii)各个差异的自身,以及
iii)根据(c)(i)、(c)(ii)和该第二文件能够复制该第二文件的信息。
7.一种把文件的旧版本更新为新版本的方法,其包括下述步骤:
a)接收多条指令,这些指令命令出现下述一种或多种情况:
i)把该旧版本的规定部分复制到该新版本的规定位置上;
ii)把该新版本的规定部分复制到该新版本的规定位置上;以及
iii)把规定的字节添加到该新版本里约规定位置上;以及
b)执行这些指令。
8.一种产生表示一个文件的第一和第二版本之间差异的数据的系统,其包括:
a)用于推导出包含着下述指令的一个序列的装置;
i)COPY指令,该指令命令从
A)位于该第一或该第二版本里的源位置,向
B)位于该第二版本里的目标位置复制字符;以及
ii)ADD指令,该指令命令把规定的字符添加到该第二版本里的规定位置上。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US35588994A | 1994-12-14 | 1994-12-14 | |
US355889 | 1994-12-14 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1132372A true CN1132372A (zh) | 1996-10-02 |
Family
ID=23399225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN95120585A Pending CN1132372A (zh) | 1994-12-14 | 1995-12-11 | 对软件和数据的有效及安全的更新 |
Country Status (7)
Country | Link |
---|---|
EP (1) | EP0717353A3 (zh) |
JP (1) | JPH08255104A (zh) |
CN (1) | CN1132372A (zh) |
BR (1) | BR9505888A (zh) |
CA (1) | CA2161360A1 (zh) |
SG (1) | SG34329A1 (zh) |
TW (1) | TW313643B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100378648C (zh) * | 2003-08-15 | 2008-04-02 | 微软公司 | 创建卷映像 |
CN101807207A (zh) * | 2010-03-22 | 2010-08-18 | 北京大用科技有限责任公司 | 一种基于内容差异比较的文档共享方法 |
CN101351772B (zh) * | 2006-01-09 | 2012-01-11 | 国际商业机器公司 | 用于在不同虚拟机映像之间共享文件的方法和系统 |
CN102707964A (zh) * | 2012-04-09 | 2012-10-03 | 深圳市佳信捷电子有限公司 | 兼容程序版本参数配置方法和装置 |
WO2017088129A1 (zh) * | 2015-11-25 | 2017-06-01 | 华为技术有限公司 | 存储系统中数据备份的方法及装置 |
CN108475303A (zh) * | 2015-12-31 | 2018-08-31 | 计算机2.0(2015)有限公司 | 应用递增多项式代码增强抵抗反向工程的计算机实现方法 |
CN111176676A (zh) * | 2019-12-17 | 2020-05-19 | 航天信息股份有限公司 | 一种单文件应用程序自动升级方法及系统 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6137805A (en) * | 1997-02-10 | 2000-10-24 | International Business Machines Corporation | Method and apparatus to remotely configure a data processing system |
US5956402A (en) * | 1997-03-07 | 1999-09-21 | At&T Corp. | Passwordless secure and efficient remote data update |
US6167407A (en) * | 1998-06-03 | 2000-12-26 | Symantec Corporation | Backtracked incremental updating |
US6080207A (en) * | 1998-06-04 | 2000-06-27 | Gateway 2000, Inc. | System and method of creating and delivering software |
GB2342252A (en) * | 1998-09-29 | 2000-04-05 | Motorola Gmbh | Mobile radio and method of loading data into a radio |
US6401239B1 (en) * | 1999-03-22 | 2002-06-04 | B.I.S. Advanced Software Systems Ltd. | System and method for quick downloading of electronic files |
US7958251B2 (en) | 2000-08-04 | 2011-06-07 | Goldman Sachs & Co. | Method and system for processing raw financial data streams to produce and distribute structured and validated product offering data to subscribing clients |
US7958025B2 (en) | 2000-08-04 | 2011-06-07 | Goldman Sachs & Co. | Method and system for processing raw financial data streams to produce and distribute structured and validated product offering objects |
US7139844B2 (en) | 2000-08-04 | 2006-11-21 | Goldman Sachs & Co. | Method and system for processing financial data objects carried on broadcast data streams and delivering information to subscribing clients |
WO2002013091A1 (en) * | 2000-08-04 | 2002-02-14 | Goldman, Sachs & Co. | System for processing raw financial data to produce validated product offering information to subscribers |
US7644125B2 (en) | 2000-09-11 | 2010-01-05 | Ianywhere Solutions, Inc. | Method, system, and computer program product for synchronization of similar data objects with event information |
US20030182414A1 (en) | 2003-05-13 | 2003-09-25 | O'neill Patrick J. | System and method for updating and distributing information |
US8479189B2 (en) | 2000-11-17 | 2013-07-02 | Hewlett-Packard Development Company, L.P. | Pattern detection preprocessor in an electronic device update generation system |
CA2414281C (en) * | 2000-11-17 | 2009-06-02 | Bitfone Corporation | System and method for updating and distributing information |
US7409685B2 (en) | 2002-04-12 | 2008-08-05 | Hewlett-Packard Development Company, L.P. | Initialization and update of software and/or firmware in electronic devices |
GB2389204A (en) | 2002-06-01 | 2003-12-03 | Hewlett Packard Co | Updating a trusted information state |
US7117507B2 (en) | 2002-06-03 | 2006-10-03 | Sumisho Computer Systems Corporation | Software atomization |
US7281017B2 (en) * | 2002-06-21 | 2007-10-09 | Sumisho Computer Systems Corporation | Views for software atomization |
JP2004152136A (ja) * | 2002-10-31 | 2004-05-27 | Matsushita Electric Ind Co Ltd | データ更新システム、データ更新システムの差分データ生成装置及びプログラム、並びに更新後ファイル復元装置及びプログラム |
JP2004227520A (ja) * | 2003-01-27 | 2004-08-12 | Mitsubishi Electric Corp | 新旧プログラム書換情報生成装置及び新旧プログラム書換情報生成方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体 |
US7484096B1 (en) | 2003-05-28 | 2009-01-27 | Microsoft Corporation | Data validation using signatures and sampling |
US7457791B1 (en) | 2003-05-30 | 2008-11-25 | Microsoft Corporation | Using invariants to validate applications states |
US7890464B2 (en) * | 2003-06-20 | 2011-02-15 | Innopath Software, Inc. | Processing software images and generating difference files |
US7343443B1 (en) | 2003-07-08 | 2008-03-11 | Hewlett-Packard Development Company, L.P. | Updated package generation based on analysis of bank dependency |
US7886093B1 (en) | 2003-07-31 | 2011-02-08 | Hewlett-Packard Development Company, L.P. | Electronic device network supporting compression and decompression in electronic devices |
US8555273B1 (en) | 2003-09-17 | 2013-10-08 | Palm. Inc. | Network for updating electronic devices |
CN1898956B (zh) | 2003-12-18 | 2012-02-22 | 松下电器产业株式会社 | 验证和运行应用程序的方法 |
CN100562096C (zh) | 2003-12-18 | 2009-11-18 | 松下电器产业株式会社 | 用于存储、认证以及执行应用程序的方法 |
US7904895B1 (en) | 2004-04-21 | 2011-03-08 | Hewlett-Packard Develpment Company, L.P. | Firmware update in electronic devices employing update agent in a flash memory card |
US7624021B2 (en) * | 2004-07-02 | 2009-11-24 | Apple Inc. | Universal container for audio data |
US8526940B1 (en) | 2004-08-17 | 2013-09-03 | Palm, Inc. | Centralized rules repository for smart phone customer care |
EP1686463A1 (en) * | 2005-01-28 | 2006-08-02 | Matsushita Electric Industrial Co., Ltd. | Difference generation method and apparatus |
WO2007146710A2 (en) | 2006-06-08 | 2007-12-21 | Hewlett-Packard Development Company, L.P. | Device management in a network |
EP2047420A4 (en) | 2006-07-27 | 2009-11-18 | Hewlett Packard Development Co | USER EXPERIENCE AND DEPENDENCE MANAGEMENT IN A MOBILE DEVICE |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE513182C2 (sv) * | 1991-06-12 | 2000-07-24 | Icl Systems Ab | Förfarande och system för att revidera data i ett distribuerat datasystem |
JPH07182178A (ja) * | 1993-02-19 | 1995-07-21 | Nec Corp | プリロードモジュール修正システム |
US5481713A (en) * | 1993-05-06 | 1996-01-02 | Apple Computer, Inc. | Method and apparatus for patching code residing on a read only memory device |
-
1995
- 1995-02-28 TW TW084101834A patent/TW313643B/zh active
- 1995-10-25 CA CA002161360A patent/CA2161360A1/en not_active Abandoned
- 1995-12-01 EP EP95308717A patent/EP0717353A3/en not_active Withdrawn
- 1995-12-11 CN CN95120585A patent/CN1132372A/zh active Pending
- 1995-12-12 SG SG1995002113A patent/SG34329A1/en unknown
- 1995-12-14 JP JP7325290A patent/JPH08255104A/ja not_active Withdrawn
- 1995-12-14 BR BR9505888A patent/BR9505888A/pt not_active Application Discontinuation
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100378648C (zh) * | 2003-08-15 | 2008-04-02 | 微软公司 | 创建卷映像 |
CN101351772B (zh) * | 2006-01-09 | 2012-01-11 | 国际商业机器公司 | 用于在不同虚拟机映像之间共享文件的方法和系统 |
CN101807207A (zh) * | 2010-03-22 | 2010-08-18 | 北京大用科技有限责任公司 | 一种基于内容差异比较的文档共享方法 |
CN102707964A (zh) * | 2012-04-09 | 2012-10-03 | 深圳市佳信捷电子有限公司 | 兼容程序版本参数配置方法和装置 |
CN102707964B (zh) * | 2012-04-09 | 2016-04-06 | 深圳市佳信捷技术股份有限公司 | 兼容程序版本参数配置方法和装置 |
WO2017088129A1 (zh) * | 2015-11-25 | 2017-06-01 | 华为技术有限公司 | 存储系统中数据备份的方法及装置 |
US10176058B2 (en) | 2015-11-25 | 2019-01-08 | Huawei Technologies Co., Ltd. | Method and apparatus for data backup in storage system |
US10540240B2 (en) | 2015-11-25 | 2020-01-21 | Huawei Technologies Co., Ltd. | Method and apparatus for data backup in storage system |
CN108475303A (zh) * | 2015-12-31 | 2018-08-31 | 计算机2.0(2015)有限公司 | 应用递增多项式代码增强抵抗反向工程的计算机实现方法 |
CN111176676A (zh) * | 2019-12-17 | 2020-05-19 | 航天信息股份有限公司 | 一种单文件应用程序自动升级方法及系统 |
CN111176676B (zh) * | 2019-12-17 | 2024-02-02 | 航天信息股份有限公司 | 一种单文件应用程序自动升级方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
TW313643B (zh) | 1997-08-21 |
BR9505888A (pt) | 1998-01-06 |
JPH08255104A (ja) | 1996-10-01 |
SG34329A1 (en) | 1996-12-06 |
EP0717353A2 (en) | 1996-06-19 |
CA2161360A1 (en) | 1996-06-15 |
EP0717353A3 (en) | 1997-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1132372A (zh) | 对软件和数据的有效及安全的更新 | |
CN100336039C (zh) | 文件管理装置 | |
US6904430B1 (en) | Method and system for efficiently identifying differences between large files | |
US7600225B2 (en) | System and method for intra-package delta compression of data | |
CN1753368A (zh) | 为远程差异压缩寻找候选对象的有效算法 | |
CN1684464A (zh) | 用于远程差分压缩的有效算法和协议 | |
CN1205574C (zh) | 数据压缩、扩展方法和装置 | |
US7231440B1 (en) | System and method for distributing portable computer virus definition records with binary file conversion | |
CN110457915B (zh) | 高效且具有前后向安全性的可搜索对称加密方法及系统 | |
EP3356954B1 (en) | Method and system for range search on encrypted data | |
CN1167014C (zh) | 文件处理方法和数据处理装置 | |
CN1726476A (zh) | 数据更新系统、用于数据更新系统的差分数据创建设备和程序、更新后文件恢复设备和程序 | |
CN1528068A (zh) | 用于计算机网络中分布式数据处理的集成式保护的方法与系统 | |
CN1552126A (zh) | 压缩文档的结构化描述的方法和系统 | |
CN1174319C (zh) | 数据结构管理装置、数据结构管理系统和方法 | |
CN1168029A (zh) | 文档管理设备,数据压缩方法和数据解压缩方法 | |
CN1181618C (zh) | 数据压缩/解压设备/方法 | |
US20110069833A1 (en) | Efficient near-duplicate data identification and ordering via attribute weighting and learning | |
WO2015035827A1 (en) | Method and apparatus for providing string encryption and decryption in program files | |
WO2013084957A1 (ja) | 暗号化検索データベース装置、暗号化検索用データの追加削除方法および追加削除プログラム | |
JP2014235454A (ja) | 文字列探索方法、文字列探索装置および文字列探索プログラム | |
CN1941694A (zh) | 生成用于检测在处理期间加密数据的虚假改造的数据的设备及方法 | |
CN1682448A (zh) | 使用贪婪的顺序上下文相关文法变换的改进的无损耗数据压缩方法 | |
CN108932436B (zh) | 一种基于安卓系统的app说明书的软件安全加固方法 | |
US11977657B1 (en) | Method and system for confidential repository searching and retrieval |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |