专利名称:一种确定文档变更并形成版本的方法
技术领域:
本发明属于文件校验领域,并通过文件校验来实现文档的版本化管理。
背景技术:
目前,MD5、SHA-I、CRC32是文件校验领域常用的Hash算法,每种算法都是对数据 提取特征产生序列号,通过对序列号的对比来确认数据是否相同,用米判断数据在传输过 程中是不是有所丢失。CRC32算法只能验证数据的完整性,而对两个同样大小的数据无法判 断其内容是否一样。MD5和SHA-I算法,可以比较出相同的数据,只有完全相同的数据才会 产生相同的MD5和SHA-I序列号,此时,数据大小必然相同,也间接验证了数据传输中的完 整性。但是MD5和SHA-I算法有小概率会出现数据不同但提取特征得到的序列号相同的情 况,此时以序列号做判断会出现错误的结果,所以任一 MD5和SHA-I算法的单独使用,都会 有小概率的出错现象。CRC32、MD5、SHA-1算法的运用又直接关系着确定文档变更并形成版 本的实现,所以以上问题同样会制约着确定文档变更并形成版本的正确性。
发明内容
本发明要解决的技术问题是提供一种高效正确的确定文档变更并形成版本的方法。为解决上述的技术问题,本发明的技术方案为结合MD5、SHA-U CRC32三种算法, 实现确定文档变更并形成版本。形成第一版本的过程包括以下步骤1)客户端将待发送的文档分成多个固定大小的数据包,通过CRC32算法对每一数 据包进行特征提取生成对应的CRC32序列号,将每一组对应的CRC32序列号和数据包按序 发送给服务器;2)服务器接收到每一组对应的CRC32序列号和数据包后,用CRC32算法对数据包 提取特征,将得到的序列号与客户端发送的对应此数据包的序列号做对比,如果得出相同 的结果,说明该数据包已被完整接收,则继续接收下一个数据包,如果得出不同的结果,则 让客户端重新发送该数据包和对应的序列号,服务器将对重新接收的数据包提取特征得到 的序列号与客户端发送的序列号做对比,直至得出相同的结果;3)服务器将所有数据包按序整合成完整的文档,存放在客户端指定的服务器数据 库中,将该文档作为第一版本。形成后续版本文档的过程包括以下步骤1)客户端从服务器数据库中将原始文档复制下载,进行修改;2)客户端将待发送的修改后文档分成多个固定大小的数据包,通过CRC32算法对 每一数据包进行特征提取生成对应的CRC32序列号,将每一组对应的CRC32序列号和数据 包按序发送给服务器;3)服务器接收到每一组对应的CRC32序列号和数据包后,用CRC32算法对数据包提取特征,将得到的CRC32序列号与客户端发送的对应此数据包的CRC32序列号做对比,如 果得出相同的结果,说明该数据包已被完整接收,则继续接收下一个数据包,如果得出不同 的结果,则让客户端重新发送该数据包和对应的序列号,服务器将对重新接收的数据包提 取特征得到的CRC32序列号与客户端发送的CRC32序列号做对比,重复该过程直至得出相 同的序列号;4)服务器将所有数据包按序整合成完整的文档,通过MD5和SHA-I算法分别对该 接收的完整文档进行特征提取,分别形成一个接收文档的MD5和SHA-I序列号;5)服务器通过MD5和SHA-I算法分别对服务器的原始文档进行特征提取,分别形 成一个对应的MD5和SHA-I序列号;6)服务器将接收文档的MD5和SHA-I序列号与服务器的原始文档被提取特征得到 的MD5和SHA-I序列号做对比,如果序列号对比的结果相同,说明客户端上传的文档和服务 器数据库中的原始文档完全一样,客户端则不能创建后一版本文档,如果序列号对比的结 果不同,说明客户端上传的文档和服务器数据库中原始文档不一样,客户端则可以创建后 续版本文档;7)服务器将接收的文档签入原始文档所在的数据库,原始文档和与其关联的版本 文档具有相同的编码,通过原始文档的编码找到其他与原始文档关联的版本,将该服务器 接收的文档作为数据库中原始文档和其关联版本文档中最高版本的后一版本。以上形成版本的过程中,服务器每次接收文档成功后,都计算其MD5和SHA-I序列 号,并将对应的序列号存储在数据库中。该确定文档变更并形成版本方法的好处是首先只通过CRC32验证接收文档的完 整性,如果接收不完整,则让客户端重新发送,只有文档接收完整了,才进一步通过MD5和 SHA-I算法验证文档的内容信息,所以节省了时间。文档被完整接收后,通过MD5和SHA-I 算法验证该接收文档是不是和服务器里的原始文档一样,只有不一样才能形成原始文档的 后续版本。同时使用MD5和SHA-I算法验证比只用一个MD5算法或SHA-I算法验证大大提 高了验证的准确性。所以该方法能更高效准确地确定文档变更并形成版本。
图1是形成第一版本文档的流程图。图2是形成后续版本文档的流程图。图3是形成后续版本中出现的另一情况。
具体实施例方式本说明书描述六个具体实施方式
,两个形成第1版本文档的具体实施方式
,四个 形成后续版本文档的具体实施方式
。1)形成第1版本文档的第一个具体实施方式
,如图1所示客户端有一个文档,名称为“文档1. doc(docx) ”,该文档有10MKB大小。客户端 将“文档1. doc(docx),,以64KB作为标准,分为16个数据包。将16个数据包按照顺序排 列,对第1个数据包进行CRC32算法特征提取,产生CRC32序列号,将第1个数据包和其对 应的CRC32序列号一起发送给服务器,服务器接收后,对数据包再次进行CRC32算法特征提取,也产生一个CRC32序列号,将服务器对数据包提取特征产生的CRC32序列号与客户端发 送的对应数据包的CRC32序列号做比较,两者相同,说明该数据包传输过程中没有丢失。然 后,客户端对第2个数据包进行CRC32算法特征提取,产生CRC32序列号,将第2个数据包和 其对应的CRC32序列号一起发送给服务器,服务器接收后,对第2个数据包再次进行CRC32 算法特征提取,也产生一个CRC32序列号,将服务器对第2个数据包提取特征产生的CRC32 序列号与客户端发送的对应第2个数据包的CRC32序列号比较,两者相同。以下14个数据 包都是以这样的过程被完整接收了。服务器将接收的16个数据包按照顺序整合成完整的10MKB的“文档
1.doc (docx) ”,将该10MKB的“文档1. doc (docx) ”存放在数据库中作为第一版本,同时为 该第1版本分配一个新的编码并附上与第一版本文档内容对应的MD5、SHA-I序列号。2)形成第1版本文档的第二个具体实施方式
,如图1所示客户端有一个文档,名称为“文档2. doc (docx) ”,该文档有10MKB大小。客户端 将“文档2. doc (docx) ”以64KB作为标准,分为16个数据包。将10M个数据包按照顺序排 列,对第1个数据包进行CRC32算法特征提取,产生CRC32序列号,将第1个数据包和其对 应的CRC32序列号一起发送给服务器,服务器接收后,对数据包再次进行CRC32算法特征提 取,也产生一个CRC32序列号,将服务器对数据包提取特征产生的CRC32序列号与客户端发 送的对应数据包的CRC32序列号做比较,两者相同,说明该数据包传输过程中没有丢失。然 后,又以同样的过程接收了 10个数据包。在接收第12个数据包的时候,服务器对第12个 数据包提取特征得到的CRC32序列号与发送来的CRC32序列号不相同,说明第12个数据包 传输时出现了错误,有可能数据丢失或被篡改,服务器便让客户端重新发送该数据包和对 应的CRC32序列号,服务器接收数据包和对应的CRC32序列号后,又对数据包进行CRC32算 法特征提取产生CRC32序列号,再次与接收的CRC32序列号进行比较,结果是相同的。继续 接收第13-16个数据包,没有出现问题。服务器再次将接收的16个数据包按照顺序整合成完整的10MKB的“文档
2.doc (docx) ”,将该1024KB的“文档2. doc (docx) ”存放在数据库中作为第1版本,同时为 该第1版本分配一个新的编码并附上与第一版本文档内容对应的MD5、SHA-I序列号。3)形成后续版本文档的第一个具体实施方式
,如图2所示客户端下载服务器的已有的10MKB的“文档3. doc (docx) ”,对“文档
3.doc (docx),,内容进行编辑修改,修改后有2048KB大小。客户端将修改后的“文档3. doc (docx) ”以64KB作为标准,分为32个数据包。将 32个数据包按照顺序排列,对第1个数据包进行CRC32算法特征提取,产生CRC32序列号, 将第1个数据包和其对应的CRC32序列号一起发送给服务器,服务器接收后,对数据包再次 进行CRC32算法特征提取,也产生一个CRC32序列号,将服务器对数据包提取特征产生的 CRC32序列号与客户端发送的对应数据包的CRC32序列号做比较,两者相同,说明该数据包 传输过程中没有丢失。然后,客户端对第2个数据包进行CRC32算法特征提取,产生CRC32 序列号,将第2个数据包和其对应的CRC32序列号一起发送给服务器,服务器接收后,对第2 个数据包再次进行CRC32算法特征提取,也产生一个CRC32序列号,将服务器对第2个数据 包提取特征产生的CRC32序列号与客户端发送的对应第2个数据包的CRC32序列号比较, 两者相同。以下30个数据包都是以这样的过程被完整接收了。
5
服务器将接收的32个数据包按照顺序整合成完整的2048KB的“文档 3. doc (docx) ”,对2048KB的“文档3. doc (docx),,进行MD5和SHA-I算法特征提取,产生 MD5和SHA-I序列号,将2048KB的“文档3. doc (docx) ”的MD5和SHA-I序列号与原始文档 1024KB的“文档3. doc (docx) ”的MD5和SHA-I序列号比较,结果不相同。服务器根据原始文档10MKB的“文档3. doc (docx) ”的编码,找到数据库中“文档
3.doc (docx),,的所有版本,数据库中已有三个不同的“文档3. doc (docx),,的版本,将接收 的2048KB的“文档3. doc (docx) ”作为第4版本,并附上和其关联版本一样的编码和对应的 MD5、SHA-I 序列号。4)形成后续版本文档的第二个具体实施方式
,如图2所示客户端下载服务器的已有的10MKB的“文档4. doc (docx) ”,对“文档
4.doc (docx),,内容进行编辑修改,修改后有2048KB大小。客户端将“文档4. doc (docx) ”以64KB作为标准,分为32个数据包。将32个数据 包按照顺序排列,对第1个数据包进行CRC32算法特征提取,产生CRC32序列号,将第1个数 据包和其对应的CRC32序列号一起发送给服务器,服务器接收后,对数据包再次进行CRC32 算法特征提取,也产生一个CRC32序列号,将服务器对数据包提取特征产生的CRC32序列号 与客户端发送的对应数据包的CRC32序列号做比较,两者相同,说明该数据包传输过程中 没有丢失。然后,又以同样的过程接收了 22个数据包。在接收第M个数据包的时候,服务 器对第M个数据包提取特征得到的CRC32序列号与发送米的CRC32序列号不相同,说明第 24个数据包传输时出现了错误,有可能数据丢失或被篡改,服务器便让客户端重新发送该 数据包和对应的CRC32序列号,服务器接收数据包和对应的CRC32序列号后,又对数据包进 行CRC32算法特征提取产生CRC32序列号,再次与接收的CRC32序列号进行比较,结果是相 同的。继续接收第25-32个数据包,没有出现问题。服务器将接收的32个数据包按照顺序整合成完整的2048KB的“文档 4. doc (docx) ”,对2048KB的“文档4. doc (docx),,进行MD5和SHA-I算法特征提取,产生 MD5和SHA-I序列号,将2048KB的“文档4. doc (docx) ”的MD5和SHA-I序列号与原始文档 1024KB的“文档4. doc (docx),,的MD5和SHA-I序列号比较,结果不相同。服务器根据原始文档10MKB的“文档4. doc (docx),,的编码,找到数据库中“文档 4. doc (docx),,的所有版本,数据库中已有三个不同的“文档4. doc (docx),,的版本,将接收 的2048KB的“文档4. doc (docx) ”作为第4版本,并附上和其关联版本一样的编码和对应的 MD5、SHA-I 序列号。5)形成后续版本文档的第三个具体实施方式
,如图2所示客户端下载服务器已有的10MKB的“文档5. doc (docx),,,对“文档5. doc (docx),, 内容进行编辑修改,修改后仍有10MKB大小。客户端将修改后的“文档5. doc (docx) ”以64KB作为标准,分为16个数据包。将 16个数据包按照顺序排列,对第1个数据包进行CRC32算法特征提取,产生CRC32序列号, 将第1个数据包和其对应的CRC32序列号一起发送给服务器,服务器接收后,对数据包再次 进行CRC32算法特征提取,也产生一个CRC32序列号,将服务器对数据包提取特征产生的 CRC32序列号与客户端发送的对应数据包的CRC32序列号做比较,两者相同,说明该数据包 传输过程中没有丢失。然后,客户端对第2个数据包进行CRC32算法特征提取,产生CRC32序列号,将第2个数据包和其对应的CRC32序列号一起发送给服务器,服务器接收后,对第2 个数据包再次进行CRC32算法特征提取,也产生一个CRC32序列号,将服务器对第2个数据 包提取特征产生的CRC32序列号与客户端发送的对应第2个数据包的CRC32序列号比较, 两者相同。以下14个数据包都是以这样的过程被完整接收了。服务器将接收的16个数据包按照顺序整合成完整的10MKB的“文档 5. doc (docx) ”,对10MKB的“文档5. doc (docx) ”进行MD5和SHA-1算法特征提取,产生MD5 和SHA-I序列号,将接收的10MKB的“文档5. doc (docx) ”的MD5和SHA-I序列号与原始文 档1024KB的“文档5. doc (docx),,的MD5和SHA-I序列号比较,结果不相同。服务器根据原始文档10MKB的“文档5. doc (docx) ”的编码,找到数据库中“文档
5.doc (docx),,的所有版本,数据库中已有三个不同的“文档5. doc (docx),,的版本,将接收 的10MKB的“文档5. doc (docx) ”作为第4版本,并附上和其关联版本一样的编码和对应的 MD5、SHA-I 序列号。6)形成后续版本文档的第四个具体实施方式
,如图3所示客户端下载服务器已有的10MKB的“文档6. doc (docx) ”,对“文档6. doc (docx),, 的内容没有进行修改。客户端将没有修改的“文档6. doc (docx) ”以64KB作为标准,分为16个数据包。 将16个数据包按照顺序排列,对第1个数据包进行CRC32算法特征提取,产生CRC32序列 号,将第1个数据包和其对应的CRC32序列号一起发送给服务器,服务器接收后,对数据包 再次进行CRC32算法特征提取,也产生一个CRC32序列号,将服务器对数据包提取特征产生 的CRC32序列号与客户端发送的对应数据包的CRC32序列号做比较,两者相同,说明该数据 包传输过程中没有丢失。然后,客户端对第2个数据包进行CRC32算法特征提取,产生CRC32 序列号,将第2个数据包和其对应的CRC32序列号一起发送给服务器,服务器接收后,对第2 个数据包再次进行CRC32算法特征提取,也产生一个CRC32序列号,将服务器对第2个数据 包提取特征产生的CRC32序列号与客户端发送的对应第2个数据包的CRC32序列号比较, 两者相同。以下14个数据包都是以这样的过程被完整接收了。服务器将接收的16个数据包按照顺序整合成完整的10MKB的“文档
6.doc (docx) ”,对10MKB的“文档6. doc (docx) ”进行MD5和SHA-1算法特征提取,产生MD5 和SHA-I序列号,将接收的10MKB的“文档6. doc (docx) ”的MD5和SHA-I序列号与原始文 档10MKB的“文档6. doc (docx),,的MD5和SHA-I序列号比较,结果相同,说明服务器数据 库中已存在与接收文档内容相同的文档。服务器不将接收的10MKB的“文档6. doc (docx) ”创建为后续版本。以上便是该方法的六个优选具体实施方式
。在所有形成文档版本的过程中,原始 文档和后续文档的文档名称是否相同都不影响该方法的实现。在所有形成文档版本的过程 中,数据包的大小也没有限制,最后一个数据包大小不一定要和前面所有数据包相同。
权利要求
1.一种确定文档变更并形成版本的方法,基于CRC32、MD5、SHA-I算法,形成第一版本 的过程包括以下步骤1)客户端将待发送的文档分成多个固定大小的数据包,通过CRC32算法对每一数据包 进行特征提取生成对应的CRC32序列号,将每一组对应的CRC32序列号和数据包按序发送 给服务器;2)服务器接收到每一组对应的CRC32序列号和数据包后,用CRC32算法对数据包提取 特征,将得到的序列号与客户端发送的对应此数据包的序列号做对比,如果得出相同的结 果,说明该数据包已被完整接收,则继续接收下一个数据包,如果得出不同的结果,则让客 户端重新发送该数据包和对应的序列号,服务器将对重新接收的数据包提取特征得到的序 列号与客户端发送的序列号做对比,直至得出相同的结果;3)服务器将所有数据包按序整合成完整的文档,存放在客户端指定的服务器数据库 中,将该文档作为第一版本。
2.一种确定文档变更并形成版本的方法,基于CRC32、MD5、SHA-I算法,形成后续版本 文档的过程包括以下步骤1)客户端从服务器数据库中将原始文档下载,进行修改;2)客户端将待发送的修改后文档分成多个固定大小的数据包,通过CRC32算法对每一 数据包进行特征提取生成对应的CRC32序列号,将每一组对应的CRC32序列号和数据包按 序发送给服务器;3)服务器接收到每一组对应的CRC32序列号和数据包后,用CRC32算法对数据包提取 特征,将得到的CRC32序列号与客户端发送的对应此数据包的CRC32序列号做对比,如果得 出相同的结果,说明该数据包已被完整接收,则继续接收下一个数据包,如果得出不同的结 果,则让客户端重新发送该数据包和对应的序列号,服务器将对重新接收的数据包提取特 征得到的CRC32序列号与客户端发送的CRC32序列号做对比,重复该过程直至得出相同的 序列号;4)服务器将所有数据包按序整合成完整的文档,通过MD5和SHA-I算法分别对该接收 的完整文档进行特征提取,分别形成一个接收文档的MD5和SHA-I序列号;5)服务器通过MD5和SHA-I算法分别对服务器的原始文档进行特征提取,分别形成一 个对应的MD5和SHA-I序列号;6)服务器将接收文档的MD5和SHA-I序列号与服务器的原始文档被提取特征得到的 MD5和SHA-I序列号做对比,如果序列号对比的结果相同,说明客户端上传的文档和服务器 数据库中的原始文档完全一样,客户端则不能创建后一版本文档,如果序列号对比的结果 不同,说明客户端上传的文档和服务器数据库中原始文档不一样,客户端则可以创建后续 版本文档;7)服务器将接收的文档签入原始文档所在的数据库,原始文档和与其关联的版本文档 具有相同的编码,通过原始文档的编码找到其他与原始文档关联的版本,将该服务器接收 的文档作为数据库中原始文档和其关联版本文档中最高版本的后一版本。
3.如权利要求1或权利要求2所述的确定文档变更并形成版本的方法,其特征在于 服务器每次接收文档成功后,都计算其MD5和SHA-I序列号,并将对应的序列号存储在数据 库中。
全文摘要
该确定文档变更并形成版本的方法,结合CRC32、MD5、SHA-1三种算法,首先用CRC32算法验证服务器接收的文档是否是完整的,如果是不完整的,让客户端重新发送文档,如果是完整的,服务器再用MD5和SHA-1算法校验接收的文档是不是和服务器里原始文档一样,只有不一样才可创建后续版本。该方法能更高效准确地确定文档变更并形成版本。
文档编号G06F17/30GK102142036SQ201110080578
公开日2011年8月3日 申请日期2011年3月24日 优先权日2011年3月24日
发明者陈必飞 申请人:镇江星浪科技产品有限公司