一种文档多重数字水印嵌入、提取方法及装置制造方法

文档序号:6536826阅读:139来源:国知局
一种文档多重数字水印嵌入、提取方法及装置制造方法
【专利摘要】本发明涉及一种文档多重数字水印嵌入、提取方法及装置,文档多重数字水印嵌入方法,包括以下步骤:获取用户输入的原始水印信息、密钥及待处理的文档;计算原始水印信息中的摘要信息,生成新水印信息;将原始水印信息和新水印信息共同作为一条数据库记录存入数据库;将文档中的字符划分为两层,根据文档第一层的字符总数、新水印信息位的长度,得到待嵌入文档第一层的新水印信息的组数,将多组新水印信息按照从前往后的顺序嵌入到文档第一层中的属性位中;按照从后往前的顺序将多组新水印信息嵌入到文档第二层中的属性位中。本发明基于Word格式文档的字符属性,使用密钥提高了安全性,重复嵌入加强了鲁棒性,多重嵌入提高了水印容量。
【专利说明】一种文档多重数字水印嵌入、提取方法及装置
【技术领域】
[0001]本发明涉及数字水印领域,特别涉及一种文档多重数字水印嵌入、提取方法及装置。
【背景技术】
[0002]近年来,随着多媒体和网络技术的迅速发展,保护数字作品的版权成为当今学术界研究的一个热点话题。数字水印作为信息隐藏技术的重要研究方向,在文本、视频、音频等多媒体版权保护方面具有重要价值。数字水印是将序列号、文字、图像标志等版权信息嵌入到多媒体数据中,以起到版权保护、秘密通信、数据文件的真伪鉴别和产品标志等作用。
[0003]现有可用性较高的文本水印方法主要有基于格式的文本水印和基于自然语言的文本水印这两大类。基于格式文本水印是迄今为止出现的最多的一类文本水印,从最初的行移位、字移位、特征编码,到后来发展出改变字体大小、颜色等方法,此类型的水印方法的研究非常活跃,但是该方法存在如安全性弱、水印容量低等不足之处。基于自然语言的文本水印最早于02年由美国Purdue大学的Mikhail.J.Atallah和VictorRaskin等人提出的。主要是通过改变句子结构、同义词替换等方法来加入水印信息。自然语言数字水印改变了文本的内容,但没有改变文本的含义和格式,添加水印后几乎不可能被察觉,也不容易被破坏。但是对于标准文件,因其格式要求比较严格,此种方法可能会改变语义,从而不适用于格式要求严格的文件。另外由于计算机对自然语言的处理还不够成熟,这成了基于自然语言文本水印技术的瓶颈。

【发明内容】

[0004]本发明所要解决的技术问题是提供一种基于Word格式文档的字符属性、利用密钥提高安全性、重复嵌入加强鲁棒性、多重嵌入提高了水印容量的文档多重数字水印嵌入、提取方法及装置。
[0005]本发明解决上述技术问题的技术方案如下:一种文档多重数字水印嵌入方法,包括以下步骤:
[0006]步骤1:获取用户输入的原始水印信息、密钥及待处理的文档;
[0007]步骤2:利用摘要算法计算原始水印信息中的摘要信息,生成新水印信息,根据新水印信息得到新水印信息位的长度;
[0008]步骤3:将原始水印信息和新水印信息共同作为一条数据库记录存入数据库,用于提取水印时查询原始水印信息;
[0009]步骤4:将文档中的字符划分为两层,根据文档第一层的字符总数、新水印信息位的长度,得到待嵌入文档第一层的新水印信息的组数,按照从前往后的顺序将多组新水印信息分别嵌入到文档第一层中的属性位中,多组新水印信息之间利用分隔符分隔;
[0010]步骤5:按照从后往前的顺序将多组新水印信息分别嵌入到文档第二层中的属性位中,多组新水印信息之间利用分隔符分隔,嵌入文档第二层中新水印信息的组数为嵌入文档第一层中新水印信息的组数的二倍。
[0011]本发明的有益效果是:本发明基于Word格式文档的字符属性,使用密钥提高了安全性,重复嵌入加强了鲁棒性,多重嵌入提高了水印容量。
[0012]在上述技术方案的基础上,本发明还可以做如下改进。
[0013]进一步,将文档中的字符划分为两层的方法具体包括以下步骤:
[0014]获取用作密钥的字符的Unicode编码,将用作密钥的字符的Unicode编码转化为~二进制序列,将二进制序列的最后两位作为密钥序列;
[0015]获取文档中所有字符的Unicode编码,将文档中每个字符的Unicode编码分别转化为二进制序列;
[0016]将密钥序列分别与文档中每个字符转化成的二进制序列进行异或操作,若结果为
00、10,则将该字符划分为文档第一层;若结果为01、11,则划分为文档第二层。
[0017]进一步,所述分隔符为Unicode编码中任意不常用的非可见字符的二进制序列。
[0018]进一步,将多组新水印信息分别嵌入到文档中的不同属性位具体包括以下步骤:
[0019]对于第一层,分别修改第一层中所有字符的NoProofing属性值,若当前待嵌入的新水印信息为1,则将 NoProofing属性值修改为True,否则,保持原始值False不变;
[0020]对于第二层,分别修改第二层中所有字符的LanguageIDOther属性值,若当前待嵌入的新水印信息为00,则保持原始值不变,若当前待嵌入的新水印信息位为01,则修改LanguageIDOther属性值为wdBasque,若当前待嵌入的新水印信息位为10,则修改LanguageIDOther属性值为wdVenda,若当前待嵌入的新水印信息位为11,则修改LanguageIDOther 属性值为 wdEstonian。
[0021]进一步,一种文档多重数字水印提取方法,包括以下步骤:
[0022]步骤Ia:检测待处理的文档中是否嵌入水印信息,如果是,所有字符按规则分为两层,转入步骤2a,否则,结束处理;
[0023]步骤2a:在文档第一层的属性位中提取水印信息,在文档第二层的属性位中提取水印信息,分别根据分隔符来得到每层提取的水印信息的实际提取组数;
[0024]步骤3a:根据文档第一层的字符总数、在文档的第一层和第二层中提取出的水印信息位的长度,分别得到嵌入文档第一层及第二层的水印信息的预定提取组数;
[0025]步骤4a:当提取出的多组水印信息一致且均匹配到一条数据库记录、每层的实际提取组数与预定提取组数均相等时,则所有水印信息正常,文档没有遭到攻击,查询数据库后输出原始水印信息;否则,进行水印纠错。
[0026]进一步,所述步骤4a中当提取出的多组水印信息一致且均匹配到一条数据库记录、每层的实际提取组数与预定提取组数均相等时,还包括在文档第二层中的属性位中提取出的水印信息的组数为在文档第一层中的属性位中提取的水印信息的组数的二倍时,所有水印信息正常。
[0027]进一步,文档中每个字符的NoProofing属性值和LanguageIDOther属性值被系统预定为默认值,逐个检测待提取水印信息的文档中每个字符的字符属性,若存在NoProofing属性值和LanguageIDOther属性值与默认值不同的字符,则该文档为嵌入水印信息的文档,否则,该文档为未嵌入水印信息的文档。
[0028]进一步,所述水印纠错具体包括以下步骤:[0029]步骤3a.1:按分隔符提取的多组水印信息,若多组水印信息不完全一致,且至少一组水印信息匹配到一条数据库记录时,返回提取出的水印信息并提示文档受损情况;否则,转3a.2 ;
[0030]步骤3a.2:若多组水印信息均不与任一数据库记录匹配,提示文档受损严重,提取出水印信息失败。
[0031]进一步,一种文档多重数字水印嵌入装置,包括获取模块,生成模块,存储模块,第一嵌入模块和第二嵌入模块;
[0032]所述获取模块,用于获取用户输入的原始水印信息、密钥及待处理的文档;
[0033]所述生成模块,用于利用摘要算法计算原始水印信息中的摘要信息,生成新水印信息,根据新水印信息得到新水印信息位的长度;
[0034]所述存储模块,用于将原始水印信息和新水印信息共同作为一条数据库记录存入数据库,用于提取水印时查询原始水印信息;
[0035]所述第一嵌入模块,用于将文档中的字符划分为两层,根据文档第一层的字符总数、新水印信息位的长度,得到待嵌入文档第一层的新水印信息的组数,按照从前往后的顺序将多组新水印信息分别嵌入到文档第一层中的属性位中,多组新水印信息之间利用分隔符分隔;
[0036]所述第二嵌入模块,用于按照从后往前的顺序将多组新水印信息分别嵌入到文档第二层中的属性位中,多组新水印信息之间利用分隔符分隔,嵌入文档第二层中新水印信息的组数为嵌入文档第一层中新水印信息的组数的二倍。
[0037]进一步,一种文档多重数字水印提取装置,包括检测模块,提取模块,计算模块和匹配模块;
[0038]所述检测模块,用于检测待处理的文档中是否嵌入水印信息,如果是,所有字符按规则分为两层,转入提取模块,否则,结束处理;
[0039]所述提取模块,用于在文档第一层的属性位中提取水印信息,在文档第二层的属性位中提取水印信息,分别根据分隔符来得到每层提取的水印信息的实际提取组数;
[0040]所述计算模块,用于根据文档第一层的字符总数、在文档的第一层和第二层中提取出的水印信息位的长度,分别得到嵌入文档第一层及第二层的水印信息的预定提取组数;
[0041]所述匹配模块,用于当提取出的多组水印信息一致且均匹配到一条数据库记录、每层的实际提取组数与预定提取组数均相等时,则所有水印信息正常,文档没有遭到攻击,查询数据库后输出原始水印信息;否则,进行水印纠错。
【专利附图】

【附图说明】
[0042]图1为本发明文档多重数字水印嵌入方法流程图;
[0043]图2为本发明文档多重数字水印提取方法流程图;
[0044]图3为本发明文档多重数字水印嵌入装置结构图;
[0045]图4为本发明文档多重数字水印提取装置结构图。
[0046]附图中,各标号所代表的部件列表如下:
[0047]1、获取模块,2、生成模块,3、存储模块,4、第一嵌入模块,5、第二嵌入模块,6、检测模块,7、提取模块,8、匹配模块。
【具体实施方式】
[0048]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
[0049]如图1所示,为本发明文档多重数字水印嵌入方法流程图;图2为本发明文档多重数字水印提取方法流程图;图3为本发明文档多重数字水印嵌入装置结构图;图4为本发明文档多重数字水印提取装置结构图。
[0050]实施例1
[0051]一种文档多重数字水印嵌入方法,包括以下步骤:
[0052]步骤1:获取用户输入的原始水印信息、密钥及待处理的文档;
[0053]步骤2:利用摘要算法计算原始水印信息中的摘要信息,生成新水印信息,根据新水印信息得到新水印信息位的长度;
[0054]步骤3:将 原始水印信息和新水印信息共同作为一条数据库记录存入数据库,用于提取水印时查询原始水印信息;
[0055]步骤4:将文档中的字符划分为两层,根据文档第一层的字符总数、新水印信息位的长度,得到待嵌入文档第一层的新水印信息的组数,按照从前往后的顺序将多组新水印信息分别嵌入到文档第一层中的属性位中,多组新水印信息之间利用分隔符分隔;
[0056]步骤5:按照从后往前的顺序将多组新水印信息分别嵌入到文档第二层中的属性位中,多组新水印信息之间利用分隔符分隔,嵌入文档第二层中新水印信息的组数为嵌入文档第一层中新水印信息的组数的二倍。
[0057]将文档中的字符划分为两层的方法具体包括以下步骤:
[0058]获取用作密钥的字符的Unicode编码,将用作密钥的字符的Unicode编码转化为二进制序列,将二进制序列的最后两位作为密钥序列;
[0059]获取文档中所有字符的Unicode编码,将文档中每个字符的Unicode编码分别转化为二进制序列;
[0060]将密钥序列分别与文档中每个字符转化成的二进制序列进行异或操作,若结果为
00、10,则将该字符划分为文档第一层;若结果为01、11,则划分为文档第二层。
[0061]所述分隔符为Unicode编码中任意不常用的非可见字符的二进制序列。
[0062]将多组新水印信息分别嵌入到文档中的不同属性位具体包括以下步骤:
[0063]对于第一层,分别修改第一层中所有字符的NoProofing属性值,若当前待嵌入的新水印信息为1,则将NoProofing属性值修改为True,否则,保持原始值False不变;
[0064]对于第二层,分别修改第二层中所有字符的LanguageIDOther属性值,若当前待嵌入的新水印信息为00,则保持原始值不变,若当前待嵌入的新水印信息位为01,则修改LanguageIDOther属性值为wdBasque,若当前待嵌入的新水印信息位为10,则修改LanguageIDOther属性值为wdVenda,若当前待嵌入的新水印信息位为11,则修改LanguageIDOther 属性值为 wdEstonian。
[0065]一种文档多重数字水印提取方法,包括以下步骤:
[0066]步骤Ia:检测待处理的文档中是否嵌入水印信息,如果是,所有字符按规则分为两层,转入步骤2a,否则,结束处理;
[0067]步骤2a:在文档第一层的属性位中提取水印信息,在文档第二层的属性位中提取水印信息,分别根据分隔符来得到每层提取的水印信息的实际提取组数;
[0068]步骤3a:根据文档第一层的字符总数、在文档的第一层和第二层中提取出的水印信息位的长度,分别得到嵌入文档第一层及第二层的水印信息的预定提取组数;
[0069]步骤4a:当提取出的多组水印信息一致且均匹配到一条数据库记录、每层的实际提取组数与预定提取组数均相等时,则所有水印信息正常,文档没有遭到攻击,查询数据库后输出原始水印信息;否则,进行水印纠错。
[0070]所述步骤4a中当提取出的多组水印信息一致且均匹配到一条数据库记录、每层的实际提取组数与预定提取组数均相等时,还包括在文档第二层中的属性位中提取出的水印信息的组数为在文档第一层中的属性位中提取的水印信息的组数的二倍时,所有水印信息正常。
[0071]所述步骤Ia中水印信息的检测方法为:
[0072]文档中每个字符的NoProofing属性值和LanguageIDOther属性值被系统预定为默认值,逐个检测待提取水印信息的文档中每个字符的字符属性,若存在NoProofing属性值和LanguageIDOther属性值与默认值不同的字符,则该文档为嵌入水印信息的文档,否贝U,该文档为未嵌入水印信息的文档。
[0073]所述水印纠错具体包括以下步骤:
[0074]步骤3a.1:按分隔符提取的多组水印信息,若多组水印信息不完全一致,且至少一组水印信息匹配到一条数据库记录时,返回提取出的水印信息并提示文档受损情况;否则,转3a.2 ;
[0075]步骤3a.2:若多组水印信息均不与任一数据库记录匹配,提示文档受损严重,提取出水印信息失败。
[0076]一种文档多重数字水印嵌入装置,包括获取模块1,生成模块2,存储模块3,第一嵌入模块4和第二嵌入模块5 ;
[0077]所述获取模块1,用于获取用户输入的原始水印信息、密钥及待处理的文档;
[0078]所述生成模块2,用于利用摘要算法计算原始水印信息中的摘要信息,生成新水印信息,根据新水印信息得到新水印信息位的长度;
[0079]所述存储模块3,用于将原始水印信息和新水印信息共同作为一条数据库记录存入数据库,用于提取水印时查询原始水印信息;
[0080]所述第一嵌入模块4,用于将文档中的字符划分为两层,根据文档第一层的字符总数、新水印信息位的长度,得到待嵌入文档第一层的新水印信息的组数,按照从前往后的顺序将多组新水印信息分别嵌入到文档第一层中的属性位中,多组新水印信息之间利用分隔符分隔;
[0081]所述第二嵌入模块5,用于按照从后往前的顺序将多组新水印信息分别嵌入到文档第二层中的属性位中,多组新水印信息之间利用分隔符分隔,嵌入文档第二层中新水印信息的组数为嵌入文档第一层中新水印信息的组数的二倍。
[0082]一种文档多重数字水印提取装置,包括检测模块6,提取模块7,计算模块8和匹配模块9 ;[0083]所述检测模块6,用于检测待处理的文档中是否嵌入水印信息,如果是,所有字符按规则分为两层,转入提取模块7,否则,结束处理;
[0084]所述提取模块7,用于在文档第一层的属性位中提取水印信息,在文档第二层的属性位中提取水印信息,分别根据分隔符来得到每层提取的水印信息的实际提取组数;
[0085]所述计算模块8,用于根据文档第一层的字符总数、在文档的第一层和第二层中提取出的水印信息位的长度,分别得到嵌入文档第一层及第二层的水印信息的预定提取组数;
[0086]所述匹配模块9,用于当提取出的多组水印信息一致且均匹配到一条数据库记录、每层的实际提取组数与预定提取组数均相等时,则所有水印信息正常,文档没有遭到攻击,查询数据库后输出原始水印信息;否则,进行水印纠错。
[0087]在具体实施中,本发明的嵌入方法包括以下6个步骤:
[0088]I)输入原始水印信息、密钥和待处理的Word文档;
[0089]2)用M D5或SHAl等信息摘要算法计算原始水印的摘要信息,将此作为之后使用的水印数据;
[0090]3)将生成的水印信息与原始水印信息作为一条记录存入数据库,用于提取时查询原始信息;
[0091]4)将Word文档的所有字符划分为两层,对于不同层,将水印信息嵌入到不同的属性位;
[0092]5)若总字符数为N,摘要信息位长度为M,则嵌入K=N/M组水印,组数值向下取整。每组水印之间需要分隔符,如可以选取Unicode编码的非可见字符的RLO作为每组之间的分隔符,其值为0010000000101110。对于第一层字符,按照从前往后的顺序嵌入K组水印;
[0093]6)对于第二层字符,同步骤5,按照从后往前的顺序嵌入2*K组水印。
[0094]上述步骤4)、5)、6)是本方法的核心。
[0095]步骤4),文本分层的方法为:获取用作密钥字符的Unicode编码,将其转换成二进制序列,取最后两位作为密钥。同时在嵌入过程中,逐个获得文本字符Unicode编码,也将其转换成二进制序列,取最后两位,与密钥进行异或操作,若
[0096]?结果为00、10,则划分为第一层,修改NoProofing位;
[0097]?结果为01、11,则划分为第二层,修改LanguageIDOther位。
[0098]步骤5)、6),本方法采用微软官方的OLE接口技术,实现对字符属性的操作。嵌入水印的基本原理是利用Word文档中单个文字的属性:NoProofing和LanguageIDOther。这两个属性的作用如下:对于Selection对象(如单个字符等),如果NoProofing属性该值为True,则拼写和语法检查工具将忽略指定的文字;字符的LanguageIDOther属性,此属性位可以设置为使用人数较少的语言的枚举值,微软推荐使用本属性来设置或返回在Mi crosof t Word从右向左语言版本所创建的文档中西文文字所用的语言。LanguageIDOther属性共有64个枚举值,经过研究筛选,本方法选取其中三个使用人数较少语言的枚举值(wdBasque、wdVenda、wdEstonian)作为修改值,即每个字符可嵌入两个水印位,第二层可以嵌入第一层的两倍信息,从而提高了水印容量。以上两个字符属性具有通过编程才能发现、添加和修改的特征,在普通的Word程序的操作中也不能清除此水印特征,具备较强的隐蔽性和抗攻击性。重复嵌入多次是为了提高其鲁棒性,即使遭到删除修改等攻击,只要有一组水印是正常的,那么就可以恢复出水印的原始信息。
[0099]水印的提取方法为嵌入方法的逆过程,为:
[0100]I)将待检测Word文档的所有字符按规则分为两层;
[0101]2)对每层的字符逐个按嵌入规则读取数据,得到η组水印信息;
[0102]3)当η组水印一致,并可以匹配到一条数据库记录时,则可以表明所有水印信息完全正常,文档没有遭到攻击,查询数据库后输出原始水印信息。否则,转水印纠错算法。
[0103]水印的纠错方法为:
[0104]I)按分隔符提取的η组水印,若η组不完全一致,但是至少I组水印匹配到一条数据库记录时,如文档遭到增加、删除字符等攻击破坏,返回提取出的水印信息并提示文档受损情况。否则,转2;
[0105]2)η组水印都不匹配数据库记录,表示每组水印信息遭到不同程度破坏,提示文档受损严重,不能提取出水印信息。
[0106]水印的检测方法为:
[0107]Word中每个字符的NoProoing和LanguageIDOther的默认值分别为FALSE和1033(WdEnglishUS),逐个检测输入的字符属性,若存在这两个属性不为默认值的字符,那么该文档为嵌入水印的文档。
[0108]积极效果
`[0109]嵌入水印信息的字符属性为不可见属性,所以嵌入水印之后从视觉上是不可感知的,具有良好的隐蔽性。
[0110]从统计学理论上来说,每层字符数平均占50%,100个字符划分为两层,每层平均分别有50个字符,那么水印容量就是150%。经实验论证,结果如表1所示,实际的水印容量接近150%。相对于其他文本水印算法有较大的提高,如表2所示。
[0111]嵌入水印时,原始水印信息用信息摘要算法进行加密,即使获得嵌入的水印信息,也不能得到原始水印信息,提高了水印的安全性。另外,使用密钥进行了分层,如果提取时输入错误的密钥,那么将会错误分层,导致提取的属性错位,那么就会得不到水印信息,从而进一步提高了水印的安全性。
[0112]如果嵌入水印后的文档遭到增加、删除字符等攻击,提取出水印信息后,根据分隔符判断,如图2所示,下划线为分隔符,矩形框为水印信息。若在分隔符后有完整的水印信息,则将其提取即可,可在一定程度上保证水印方法的鲁棒性。
[0113]表1水印容量统计
【权利要求】
1.一种文档多重数字水印嵌入方法,其特征在于,包括以下步骤: 步骤1:获取用户输入的原始水印信息、密钥及待处理的文档; 步骤2:利用摘要算法计算原始水印信息中的摘要信息,生成新水印信息,根据新水印信息得到新水印信息位的长度; 步骤3:将原始水印信息和新水印信息共同作为一条数据库记录存入数据库,用于提取水印时查询原始水印信息; 步骤4:将文档中的字符划分为两层,根据文档第一层的字符总数、新水印信息位的长度,得到待嵌入文档第一层的新水印信息的组数,按照从前往后的顺序将多组新水印信息分别嵌入到文档第一层中的属性位中,多组新水印信息之间利用分隔符分隔; 步骤5:按照从后往前的顺序将多组新水印信息分别嵌入到文档第二层中的属性位中,多组新水印信息之间利用分隔符分隔,嵌入文档第二层中新水印信息的组数为嵌入文档第一层中新水印信息的组数的二倍。
2.根据权利要求1所述的文档多重数字水印嵌入方法,其特征在于:将文档中的字符划分为两层的方法具体包括以下步骤: 获取用作密钥的字符的Unicode编码,将用作密钥的字符的Unicode编码转化为二进制序列,将二进制序列的最后两位作为密钥序列; 获取文档中所有 字符的Unicode编码,将文档中每个字符的Unicode编码分别转化为二进制序列; 将密钥序列分别与文档中每个字符转化成的二进制序列进行异或操作,若结果为00、10,则将该字符划分为文档第一层;若结果为01、11,则划分为文档第二层。
3.根据权利要求1所述的文档多重数字水印嵌入方法,其特征在于:所述分隔符为Unicode编码中任意不常用的非可见字符的二进制序列。
4.根据权利要求1所述的文档多重数字水印嵌入方法,其特征在于:将多组新水印信息分别嵌入到文档中的不同属性位具体包括以下步骤: 对于第一层,分别修改第一层中所有字符的NoProofing属性值,若当前待嵌入的新水印信息为1,则将NoProofing属性值修改为True,否则,保持原始值False不变; 对于第二层,分别修改第二层中所有字符的LanguageIDOther属性值,若当前待嵌入的新水印信息为00,则保持原始值不变,若当前待嵌入的新水印信息位为01,则修改LanguageIDOther属性值为wdBasque,若当前待嵌入的新水印信息位为10,则修改LanguageIDOther属性值为wdVenda,若当前待嵌入的新水印信息位为11,则修改LanguageIDOther 属性值为 wdEstonian。
5.一种文档多重数字水印提取方法,其特征在于,包括以下步骤: 步骤Ia:检测待处理的文档中是否嵌入水印信息,如果是,所有字符按规则分为两层,转入步骤2a,否则,结束处理; 步骤2a:在文档第一层的属性位中提取水印信息,在文档第二层的属性位中提取水印信息,分别根据分隔符来得到每层提取的水印信息的实际提取组数; 步骤3a:根据文档第一层的字符总数、在文档的第一层和第二层中提取出的水印信息位的长度,分别得到嵌入文档第一层及第二层的水印信息的预定提取组数; 步骤4a:当提取出的多组水印信息一致且均匹配到一条数据库记录、每层的实际提取组数与预定提取组数均相等时,则所有水印信息正常,文档没有遭到攻击,查询数据库后输出原始水印信息;否则,进行水印纠错。
6.根据权利要求5所述的文档多重数字水印提取方法,其特征在于:所述步骤4a中当提取出的多组水印信息一致且均匹配到一条数据库记录、每层的实际提取组数与预定提取组数均相等时,还包括在文档第二层中的属性位中提取出的水印信息的组数为在文档第一层中的属性位中提取的水印信息的组数的二倍时,所有水印信息正常。
7.根据权利要求5所述的文档多重数字水印提取方法,其特征在于,所述步骤Ia中水印信息的检测方法为: 文档中每个字符的NoProofing属性值和LanguageIDOther属性值被系统预定为默认值,逐个检测待提取水印信息的文档中每个字符的字符属性,若存在NoProofing属性值和LanguageIDOther属性值与默认值不同的字符,则该文档为嵌入水印信息的文档,否则,该文档为未嵌入水印信息 的文档。
8.根据权利要求5所述的文档多重数字水印提取方法,其特征在于:所述水印纠错具体包括以下步骤: 步骤3a.1:按分隔符提取的多组水印信息,若多组水印信息不完全一致,且至少一组水印信息匹配到一条数据库记录时,返回提取出的水印信息并提示文档受损情况;否则,转3a.2 ; 步骤3a.2:若多组水印信息均不与任一数据库记录匹配,提示文档受损严重,提取出水印信息失败。
9.一种文档多重数字水印嵌入装置,其特征在于:包括获取模块(1),生成模块(2),存储模块(3),第一嵌入模块(4)和第二嵌入模块(5); 所述获取模块(1),用于获取用户输入的原始水印信息、密钥及待处理的文档; 所述生成模块(2),用于利用摘要算法计算原始水印信息中的摘要信息,生成新水印信息,根据新水印信息得到新水印信息位的长度; 所述存储模块(3),用于将原始水印信息和新水印信息共同作为一条数据库记录存入数据库,用于提取水印时查询原始水印信息; 所述第一嵌入模块(4),用于将文档中的字符划分为两层,根据文档第一层的字符总数、新水印信息位的长度,得到待嵌入文档第一层的新水印信息的组数,按照从前往后的顺序将多组新水印信息分别嵌入到文档第一层中的属性位中,多组新水印信息之间利用分隔符分隔; 所述第二嵌入模块(5),用于按照从后往前的顺序将多组新水印信息分别嵌入到文档第二层中的属性位中,多组新水印信息之间利用分隔符分隔,嵌入文档第二层中新水印信息的组数为嵌入文档第一层中新水印信息的组数的二倍。
10.一种文档多重数字水印提取装置,其特征在于:包括检测模块(6),提取模块(7),计算模块(8)和匹配模块(9); 所述检测模块(6),用于检测待处理的文档中是否嵌入水印信息,如果是,所有字符按规则分为两层,转入提取模块(7),否则,结束处理; 所述提取模块(7),用于在文档第一层的属性位中提取水印信息,在文档第二层的属性位中提取水印信息,分别根据分隔符来得到每层提取的水印信息的实际提取组数;所述计算模块(8),用于根据文档第一层的字符总数、在文档的第一层和第二层中提取出的水印信息位的长度,分别得到嵌入文档第一层及第二层的水印信息的预定提取组数;所述匹配模块(9),用于当提取出的多组水印信息一致且均匹配到一条数据库记录、每层的实际提取组数与预定提取组数均相等时,则所有水印信息正常,文档没有遭到攻击,查询数据库后输 出原始水印信息;否则,进行水印纠错。
【文档编号】G06F17/22GK103761459SQ201410035906
【公开日】2014年4月30日 申请日期:2014年1月24日 优先权日:2014年1月24日
【发明者】陈小军, 时金桥, 徐睿, 蒲以国, 赵亮, 张锐 申请人:中国科学院信息工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1