亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種文檔多重數(shù)字水印嵌入、提取方法及裝置制造方法

文檔序號:6536826閱讀:167來源:國知局
一種文檔多重數(shù)字水印嵌入、提取方法及裝置制造方法
【專利摘要】本發(fā)明涉及一種文檔多重數(shù)字水印嵌入、提取方法及裝置,文檔多重數(shù)字水印嵌入方法,包括以下步驟:獲取用戶輸入的原始水印信息、密鑰及待處理的文檔;計算原始水印信息中的摘要信息,生成新水印信息;將原始水印信息和新水印信息共同作為一條數(shù)據(jù)庫記錄存入數(shù)據(jù)庫;將文檔中的字符劃分為兩層,根據(jù)文檔第一層的字符總數(shù)、新水印信息位的長度,得到待嵌入文檔第一層的新水印信息的組數(shù),將多組新水印信息按照從前往后的順序嵌入到文檔第一層中的屬性位中;按照從后往前的順序?qū)⒍嘟M新水印信息嵌入到文檔第二層中的屬性位中。本發(fā)明基于Word格式文檔的字符屬性,使用密鑰提高了安全性,重復(fù)嵌入加強了魯棒性,多重嵌入提高了水印容量。
【專利說明】一種文檔多重數(shù)字水印嵌入、提取方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)字水印領(lǐng)域,特別涉及一種文檔多重數(shù)字水印嵌入、提取方法及裝置。
【背景技術(shù)】
[0002]近年來,隨著多媒體和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,保護數(shù)字作品的版權(quán)成為當(dāng)今學(xué)術(shù)界研究的一個熱點話題。數(shù)字水印作為信息隱藏技術(shù)的重要研究方向,在文本、視頻、音頻等多媒體版權(quán)保護方面具有重要價值。數(shù)字水印是將序列號、文字、圖像標(biāo)志等版權(quán)信息嵌入到多媒體數(shù)據(jù)中,以起到版權(quán)保護、秘密通信、數(shù)據(jù)文件的真?zhèn)舞b別和產(chǎn)品標(biāo)志等作用。
[0003]現(xiàn)有可用性較高的文本水印方法主要有基于格式的文本水印和基于自然語言的文本水印這兩大類?;诟袷轿谋舅∈瞧駷橹钩霈F(xiàn)的最多的一類文本水印,從最初的行移位、字移位、特征編碼,到后來發(fā)展出改變字體大小、顏色等方法,此類型的水印方法的研究非?;钴S,但是該方法存在如安全性弱、水印容量低等不足之處。基于自然語言的文本水印最早于02年由美國Purdue大學(xué)的Mikhail.J.Atallah和VictorRaskin等人提出的。主要是通過改變句子結(jié)構(gòu)、同義詞替換等方法來加入水印信息。自然語言數(shù)字水印改變了文本的內(nèi)容,但沒有改變文本的含義和格式,添加水印后幾乎不可能被察覺,也不容易被破壞。但是對于標(biāo)準(zhǔn)文件,因其格式要求比較嚴(yán)格,此種方法可能會改變語義,從而不適用于格式要求嚴(yán)格的文件。另外由于計算機對自然語言的處理還不夠成熟,這成了基于自然語言文本水印技術(shù)的瓶頸。

【發(fā)明內(nèi)容】

[0004]本發(fā)明所要解決的技術(shù)問題是提供一種基于Word格式文檔的字符屬性、利用密鑰提高安全性、重復(fù)嵌入加強魯棒性、多重嵌入提高了水印容量的文檔多重數(shù)字水印嵌入、提取方法及裝置。
[0005]本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種文檔多重數(shù)字水印嵌入方法,包括以下步驟:
[0006]步驟1:獲取用戶輸入的原始水印信息、密鑰及待處理的文檔;
[0007]步驟2:利用摘要算法計算原始水印信息中的摘要信息,生成新水印信息,根據(jù)新水印信息得到新水印信息位的長度;
[0008]步驟3:將原始水印信息和新水印信息共同作為一條數(shù)據(jù)庫記錄存入數(shù)據(jù)庫,用于提取水印時查詢原始水印信息;
[0009]步驟4:將文檔中的字符劃分為兩層,根據(jù)文檔第一層的字符總數(shù)、新水印信息位的長度,得到待嵌入文檔第一層的新水印信息的組數(shù),按照從前往后的順序?qū)⒍嘟M新水印信息分別嵌入到文檔第一層中的屬性位中,多組新水印信息之間利用分隔符分隔;
[0010]步驟5:按照從后往前的順序?qū)⒍嘟M新水印信息分別嵌入到文檔第二層中的屬性位中,多組新水印信息之間利用分隔符分隔,嵌入文檔第二層中新水印信息的組數(shù)為嵌入文檔第一層中新水印信息的組數(shù)的二倍。
[0011]本發(fā)明的有益效果是:本發(fā)明基于Word格式文檔的字符屬性,使用密鑰提高了安全性,重復(fù)嵌入加強了魯棒性,多重嵌入提高了水印容量。
[0012]在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進。
[0013]進一步,將文檔中的字符劃分為兩層的方法具體包括以下步驟:
[0014]獲取用作密鑰的字符的Unicode編碼,將用作密鑰的字符的Unicode編碼轉(zhuǎn)化為~二進制序列,將二進制序列的最后兩位作為密鑰序列;
[0015]獲取文檔中所有字符的Unicode編碼,將文檔中每個字符的Unicode編碼分別轉(zhuǎn)化為二進制序列;
[0016]將密鑰序列分別與文檔中每個字符轉(zhuǎn)化成的二進制序列進行異或操作,若結(jié)果為
00、10,則將該字符劃分為文檔第一層;若結(jié)果為01、11,則劃分為文檔第二層。
[0017]進一步,所述分隔符為Unicode編碼中任意不常用的非可見字符的二進制序列。
[0018]進一步,將多組新水印信息分別嵌入到文檔中的不同屬性位具體包括以下步驟:
[0019]對于第一層,分別修改第一層中所有字符的NoProofing屬性值,若當(dāng)前待嵌入的新水印信息為1,則將 NoProofing屬性值修改為True,否則,保持原始值False不變;
[0020]對于第二層,分別修改第二層中所有字符的LanguageIDOther屬性值,若當(dāng)前待嵌入的新水印信息為00,則保持原始值不變,若當(dāng)前待嵌入的新水印信息位為01,則修改LanguageIDOther屬性值為wdBasque,若當(dāng)前待嵌入的新水印信息位為10,則修改LanguageIDOther屬性值為wdVenda,若當(dāng)前待嵌入的新水印信息位為11,則修改LanguageIDOther 屬性值為 wdEstonian。
[0021]進一步,一種文檔多重數(shù)字水印提取方法,包括以下步驟:
[0022]步驟Ia:檢測待處理的文檔中是否嵌入水印信息,如果是,所有字符按規(guī)則分為兩層,轉(zhuǎn)入步驟2a,否則,結(jié)束處理;
[0023]步驟2a:在文檔第一層的屬性位中提取水印信息,在文檔第二層的屬性位中提取水印信息,分別根據(jù)分隔符來得到每層提取的水印信息的實際提取組數(shù);
[0024]步驟3a:根據(jù)文檔第一層的字符總數(shù)、在文檔的第一層和第二層中提取出的水印信息位的長度,分別得到嵌入文檔第一層及第二層的水印信息的預(yù)定提取組數(shù);
[0025]步驟4a:當(dāng)提取出的多組水印信息一致且均匹配到一條數(shù)據(jù)庫記錄、每層的實際提取組數(shù)與預(yù)定提取組數(shù)均相等時,則所有水印信息正常,文檔沒有遭到攻擊,查詢數(shù)據(jù)庫后輸出原始水印信息;否則,進行水印糾錯。
[0026]進一步,所述步驟4a中當(dāng)提取出的多組水印信息一致且均匹配到一條數(shù)據(jù)庫記錄、每層的實際提取組數(shù)與預(yù)定提取組數(shù)均相等時,還包括在文檔第二層中的屬性位中提取出的水印信息的組數(shù)為在文檔第一層中的屬性位中提取的水印信息的組數(shù)的二倍時,所有水印信息正常。
[0027]進一步,文檔中每個字符的NoProofing屬性值和LanguageIDOther屬性值被系統(tǒng)預(yù)定為默認(rèn)值,逐個檢測待提取水印信息的文檔中每個字符的字符屬性,若存在NoProofing屬性值和LanguageIDOther屬性值與默認(rèn)值不同的字符,則該文檔為嵌入水印信息的文檔,否則,該文檔為未嵌入水印信息的文檔。
[0028]進一步,所述水印糾錯具體包括以下步驟:[0029]步驟3a.1:按分隔符提取的多組水印信息,若多組水印信息不完全一致,且至少一組水印信息匹配到一條數(shù)據(jù)庫記錄時,返回提取出的水印信息并提示文檔受損情況;否則,轉(zhuǎn)3a.2 ;
[0030]步驟3a.2:若多組水印信息均不與任一數(shù)據(jù)庫記錄匹配,提示文檔受損嚴(yán)重,提取出水印信息失敗。
[0031]進一步,一種文檔多重數(shù)字水印嵌入裝置,包括獲取模塊,生成模塊,存儲模塊,第一嵌入模塊和第二嵌入模塊;
[0032]所述獲取模塊,用于獲取用戶輸入的原始水印信息、密鑰及待處理的文檔;
[0033]所述生成模塊,用于利用摘要算法計算原始水印信息中的摘要信息,生成新水印信息,根據(jù)新水印信息得到新水印信息位的長度;
[0034]所述存儲模塊,用于將原始水印信息和新水印信息共同作為一條數(shù)據(jù)庫記錄存入數(shù)據(jù)庫,用于提取水印時查詢原始水印信息;
[0035]所述第一嵌入模塊,用于將文檔中的字符劃分為兩層,根據(jù)文檔第一層的字符總數(shù)、新水印信息位的長度,得到待嵌入文檔第一層的新水印信息的組數(shù),按照從前往后的順序?qū)⒍嘟M新水印信息分別嵌入到文檔第一層中的屬性位中,多組新水印信息之間利用分隔符分隔;
[0036]所述第二嵌入模塊,用于按照從后往前的順序?qū)⒍嘟M新水印信息分別嵌入到文檔第二層中的屬性位中,多組新水印信息之間利用分隔符分隔,嵌入文檔第二層中新水印信息的組數(shù)為嵌入文檔第一層中新水印信息的組數(shù)的二倍。
[0037]進一步,一種文檔多重數(shù)字水印提取裝置,包括檢測模塊,提取模塊,計算模塊和匹配模塊;
[0038]所述檢測模塊,用于檢測待處理的文檔中是否嵌入水印信息,如果是,所有字符按規(guī)則分為兩層,轉(zhuǎn)入提取模塊,否則,結(jié)束處理;
[0039]所述提取模塊,用于在文檔第一層的屬性位中提取水印信息,在文檔第二層的屬性位中提取水印信息,分別根據(jù)分隔符來得到每層提取的水印信息的實際提取組數(shù);
[0040]所述計算模塊,用于根據(jù)文檔第一層的字符總數(shù)、在文檔的第一層和第二層中提取出的水印信息位的長度,分別得到嵌入文檔第一層及第二層的水印信息的預(yù)定提取組數(shù);
[0041]所述匹配模塊,用于當(dāng)提取出的多組水印信息一致且均匹配到一條數(shù)據(jù)庫記錄、每層的實際提取組數(shù)與預(yù)定提取組數(shù)均相等時,則所有水印信息正常,文檔沒有遭到攻擊,查詢數(shù)據(jù)庫后輸出原始水印信息;否則,進行水印糾錯。
【專利附圖】

【附圖說明】
[0042]圖1為本發(fā)明文檔多重數(shù)字水印嵌入方法流程圖;
[0043]圖2為本發(fā)明文檔多重數(shù)字水印提取方法流程圖;
[0044]圖3為本發(fā)明文檔多重數(shù)字水印嵌入裝置結(jié)構(gòu)圖;
[0045]圖4為本發(fā)明文檔多重數(shù)字水印提取裝置結(jié)構(gòu)圖。
[0046]附圖中,各標(biāo)號所代表的部件列表如下:
[0047]1、獲取模塊,2、生成模塊,3、存儲模塊,4、第一嵌入模塊,5、第二嵌入模塊,6、檢測模塊,7、提取模塊,8、匹配模塊。
【具體實施方式】
[0048]以下結(jié)合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0049]如圖1所示,為本發(fā)明文檔多重數(shù)字水印嵌入方法流程圖;圖2為本發(fā)明文檔多重數(shù)字水印提取方法流程圖;圖3為本發(fā)明文檔多重數(shù)字水印嵌入裝置結(jié)構(gòu)圖;圖4為本發(fā)明文檔多重數(shù)字水印提取裝置結(jié)構(gòu)圖。
[0050]實施例1
[0051]一種文檔多重數(shù)字水印嵌入方法,包括以下步驟:
[0052]步驟1:獲取用戶輸入的原始水印信息、密鑰及待處理的文檔;
[0053]步驟2:利用摘要算法計算原始水印信息中的摘要信息,生成新水印信息,根據(jù)新水印信息得到新水印信息位的長度;
[0054]步驟3:將 原始水印信息和新水印信息共同作為一條數(shù)據(jù)庫記錄存入數(shù)據(jù)庫,用于提取水印時查詢原始水印信息;
[0055]步驟4:將文檔中的字符劃分為兩層,根據(jù)文檔第一層的字符總數(shù)、新水印信息位的長度,得到待嵌入文檔第一層的新水印信息的組數(shù),按照從前往后的順序?qū)⒍嘟M新水印信息分別嵌入到文檔第一層中的屬性位中,多組新水印信息之間利用分隔符分隔;
[0056]步驟5:按照從后往前的順序?qū)⒍嘟M新水印信息分別嵌入到文檔第二層中的屬性位中,多組新水印信息之間利用分隔符分隔,嵌入文檔第二層中新水印信息的組數(shù)為嵌入文檔第一層中新水印信息的組數(shù)的二倍。
[0057]將文檔中的字符劃分為兩層的方法具體包括以下步驟:
[0058]獲取用作密鑰的字符的Unicode編碼,將用作密鑰的字符的Unicode編碼轉(zhuǎn)化為二進制序列,將二進制序列的最后兩位作為密鑰序列;
[0059]獲取文檔中所有字符的Unicode編碼,將文檔中每個字符的Unicode編碼分別轉(zhuǎn)化為二進制序列;
[0060]將密鑰序列分別與文檔中每個字符轉(zhuǎn)化成的二進制序列進行異或操作,若結(jié)果為
00、10,則將該字符劃分為文檔第一層;若結(jié)果為01、11,則劃分為文檔第二層。
[0061]所述分隔符為Unicode編碼中任意不常用的非可見字符的二進制序列。
[0062]將多組新水印信息分別嵌入到文檔中的不同屬性位具體包括以下步驟:
[0063]對于第一層,分別修改第一層中所有字符的NoProofing屬性值,若當(dāng)前待嵌入的新水印信息為1,則將NoProofing屬性值修改為True,否則,保持原始值False不變;
[0064]對于第二層,分別修改第二層中所有字符的LanguageIDOther屬性值,若當(dāng)前待嵌入的新水印信息為00,則保持原始值不變,若當(dāng)前待嵌入的新水印信息位為01,則修改LanguageIDOther屬性值為wdBasque,若當(dāng)前待嵌入的新水印信息位為10,則修改LanguageIDOther屬性值為wdVenda,若當(dāng)前待嵌入的新水印信息位為11,則修改LanguageIDOther 屬性值為 wdEstonian。
[0065]一種文檔多重數(shù)字水印提取方法,包括以下步驟:
[0066]步驟Ia:檢測待處理的文檔中是否嵌入水印信息,如果是,所有字符按規(guī)則分為兩層,轉(zhuǎn)入步驟2a,否則,結(jié)束處理;
[0067]步驟2a:在文檔第一層的屬性位中提取水印信息,在文檔第二層的屬性位中提取水印信息,分別根據(jù)分隔符來得到每層提取的水印信息的實際提取組數(shù);
[0068]步驟3a:根據(jù)文檔第一層的字符總數(shù)、在文檔的第一層和第二層中提取出的水印信息位的長度,分別得到嵌入文檔第一層及第二層的水印信息的預(yù)定提取組數(shù);
[0069]步驟4a:當(dāng)提取出的多組水印信息一致且均匹配到一條數(shù)據(jù)庫記錄、每層的實際提取組數(shù)與預(yù)定提取組數(shù)均相等時,則所有水印信息正常,文檔沒有遭到攻擊,查詢數(shù)據(jù)庫后輸出原始水印信息;否則,進行水印糾錯。
[0070]所述步驟4a中當(dāng)提取出的多組水印信息一致且均匹配到一條數(shù)據(jù)庫記錄、每層的實際提取組數(shù)與預(yù)定提取組數(shù)均相等時,還包括在文檔第二層中的屬性位中提取出的水印信息的組數(shù)為在文檔第一層中的屬性位中提取的水印信息的組數(shù)的二倍時,所有水印信息正常。
[0071]所述步驟Ia中水印信息的檢測方法為:
[0072]文檔中每個字符的NoProofing屬性值和LanguageIDOther屬性值被系統(tǒng)預(yù)定為默認(rèn)值,逐個檢測待提取水印信息的文檔中每個字符的字符屬性,若存在NoProofing屬性值和LanguageIDOther屬性值與默認(rèn)值不同的字符,則該文檔為嵌入水印信息的文檔,否貝U,該文檔為未嵌入水印信息的文檔。
[0073]所述水印糾錯具體包括以下步驟:
[0074]步驟3a.1:按分隔符提取的多組水印信息,若多組水印信息不完全一致,且至少一組水印信息匹配到一條數(shù)據(jù)庫記錄時,返回提取出的水印信息并提示文檔受損情況;否則,轉(zhuǎn)3a.2 ;
[0075]步驟3a.2:若多組水印信息均不與任一數(shù)據(jù)庫記錄匹配,提示文檔受損嚴(yán)重,提取出水印信息失敗。
[0076]一種文檔多重數(shù)字水印嵌入裝置,包括獲取模塊1,生成模塊2,存儲模塊3,第一嵌入模塊4和第二嵌入模塊5 ;
[0077]所述獲取模塊1,用于獲取用戶輸入的原始水印信息、密鑰及待處理的文檔;
[0078]所述生成模塊2,用于利用摘要算法計算原始水印信息中的摘要信息,生成新水印信息,根據(jù)新水印信息得到新水印信息位的長度;
[0079]所述存儲模塊3,用于將原始水印信息和新水印信息共同作為一條數(shù)據(jù)庫記錄存入數(shù)據(jù)庫,用于提取水印時查詢原始水印信息;
[0080]所述第一嵌入模塊4,用于將文檔中的字符劃分為兩層,根據(jù)文檔第一層的字符總數(shù)、新水印信息位的長度,得到待嵌入文檔第一層的新水印信息的組數(shù),按照從前往后的順序?qū)⒍嘟M新水印信息分別嵌入到文檔第一層中的屬性位中,多組新水印信息之間利用分隔符分隔;
[0081]所述第二嵌入模塊5,用于按照從后往前的順序?qū)⒍嘟M新水印信息分別嵌入到文檔第二層中的屬性位中,多組新水印信息之間利用分隔符分隔,嵌入文檔第二層中新水印信息的組數(shù)為嵌入文檔第一層中新水印信息的組數(shù)的二倍。
[0082]一種文檔多重數(shù)字水印提取裝置,包括檢測模塊6,提取模塊7,計算模塊8和匹配模塊9 ;[0083]所述檢測模塊6,用于檢測待處理的文檔中是否嵌入水印信息,如果是,所有字符按規(guī)則分為兩層,轉(zhuǎn)入提取模塊7,否則,結(jié)束處理;
[0084]所述提取模塊7,用于在文檔第一層的屬性位中提取水印信息,在文檔第二層的屬性位中提取水印信息,分別根據(jù)分隔符來得到每層提取的水印信息的實際提取組數(shù);
[0085]所述計算模塊8,用于根據(jù)文檔第一層的字符總數(shù)、在文檔的第一層和第二層中提取出的水印信息位的長度,分別得到嵌入文檔第一層及第二層的水印信息的預(yù)定提取組數(shù);
[0086]所述匹配模塊9,用于當(dāng)提取出的多組水印信息一致且均匹配到一條數(shù)據(jù)庫記錄、每層的實際提取組數(shù)與預(yù)定提取組數(shù)均相等時,則所有水印信息正常,文檔沒有遭到攻擊,查詢數(shù)據(jù)庫后輸出原始水印信息;否則,進行水印糾錯。
[0087]在具體實施中,本發(fā)明的嵌入方法包括以下6個步驟:
[0088]I)輸入原始水印信息、密鑰和待處理的Word文檔;
[0089]2)用M D5或SHAl等信息摘要算法計算原始水印的摘要信息,將此作為之后使用的水印數(shù)據(jù);
[0090]3)將生成的水印信息與原始水印信息作為一條記錄存入數(shù)據(jù)庫,用于提取時查詢原始信息;
[0091]4)將Word文檔的所有字符劃分為兩層,對于不同層,將水印信息嵌入到不同的屬性位;
[0092]5)若總字符數(shù)為N,摘要信息位長度為M,則嵌入K=N/M組水印,組數(shù)值向下取整。每組水印之間需要分隔符,如可以選取Unicode編碼的非可見字符的RLO作為每組之間的分隔符,其值為0010000000101110。對于第一層字符,按照從前往后的順序嵌入K組水??;
[0093]6)對于第二層字符,同步驟5,按照從后往前的順序嵌入2*K組水印。
[0094]上述步驟4)、5)、6)是本方法的核心。
[0095]步驟4),文本分層的方法為:獲取用作密鑰字符的Unicode編碼,將其轉(zhuǎn)換成二進制序列,取最后兩位作為密鑰。同時在嵌入過程中,逐個獲得文本字符Unicode編碼,也將其轉(zhuǎn)換成二進制序列,取最后兩位,與密鑰進行異或操作,若
[0096]?結(jié)果為00、10,則劃分為第一層,修改NoProofing位;
[0097]?結(jié)果為01、11,則劃分為第二層,修改LanguageIDOther位。
[0098]步驟5)、6),本方法采用微軟官方的OLE接口技術(shù),實現(xiàn)對字符屬性的操作。嵌入水印的基本原理是利用Word文檔中單個文字的屬性:NoProofing和LanguageIDOther。這兩個屬性的作用如下:對于Selection對象(如單個字符等),如果NoProofing屬性該值為True,則拼寫和語法檢查工具將忽略指定的文字;字符的LanguageIDOther屬性,此屬性位可以設(shè)置為使用人數(shù)較少的語言的枚舉值,微軟推薦使用本屬性來設(shè)置或返回在Mi crosof t Word從右向左語言版本所創(chuàng)建的文檔中西文文字所用的語言。LanguageIDOther屬性共有64個枚舉值,經(jīng)過研究篩選,本方法選取其中三個使用人數(shù)較少語言的枚舉值(wdBasque、wdVenda、wdEstonian)作為修改值,即每個字符可嵌入兩個水印位,第二層可以嵌入第一層的兩倍信息,從而提高了水印容量。以上兩個字符屬性具有通過編程才能發(fā)現(xiàn)、添加和修改的特征,在普通的Word程序的操作中也不能清除此水印特征,具備較強的隱蔽性和抗攻擊性。重復(fù)嵌入多次是為了提高其魯棒性,即使遭到刪除修改等攻擊,只要有一組水印是正常的,那么就可以恢復(fù)出水印的原始信息。
[0099]水印的提取方法為嵌入方法的逆過程,為:
[0100]I)將待檢測Word文檔的所有字符按規(guī)則分為兩層;
[0101]2)對每層的字符逐個按嵌入規(guī)則讀取數(shù)據(jù),得到η組水印信息;
[0102]3)當(dāng)η組水印一致,并可以匹配到一條數(shù)據(jù)庫記錄時,則可以表明所有水印信息完全正常,文檔沒有遭到攻擊,查詢數(shù)據(jù)庫后輸出原始水印信息。否則,轉(zhuǎn)水印糾錯算法。
[0103]水印的糾錯方法為:
[0104]I)按分隔符提取的η組水印,若η組不完全一致,但是至少I組水印匹配到一條數(shù)據(jù)庫記錄時,如文檔遭到增加、刪除字符等攻擊破壞,返回提取出的水印信息并提示文檔受損情況。否則,轉(zhuǎn)2;
[0105]2)η組水印都不匹配數(shù)據(jù)庫記錄,表示每組水印信息遭到不同程度破壞,提示文檔受損嚴(yán)重,不能提取出水印信息。
[0106]水印的檢測方法為:
[0107]Word中每個字符的NoProoing和LanguageIDOther的默認(rèn)值分別為FALSE和1033(WdEnglishUS),逐個檢測輸入的字符屬性,若存在這兩個屬性不為默認(rèn)值的字符,那么該文檔為嵌入水印的文檔。
[0108]積極效果
`[0109]嵌入水印信息的字符屬性為不可見屬性,所以嵌入水印之后從視覺上是不可感知的,具有良好的隱蔽性。
[0110]從統(tǒng)計學(xué)理論上來說,每層字符數(shù)平均占50%,100個字符劃分為兩層,每層平均分別有50個字符,那么水印容量就是150%。經(jīng)實驗論證,結(jié)果如表1所示,實際的水印容量接近150%。相對于其他文本水印算法有較大的提高,如表2所示。
[0111]嵌入水印時,原始水印信息用信息摘要算法進行加密,即使獲得嵌入的水印信息,也不能得到原始水印信息,提高了水印的安全性。另外,使用密鑰進行了分層,如果提取時輸入錯誤的密鑰,那么將會錯誤分層,導(dǎo)致提取的屬性錯位,那么就會得不到水印信息,從而進一步提高了水印的安全性。
[0112]如果嵌入水印后的文檔遭到增加、刪除字符等攻擊,提取出水印信息后,根據(jù)分隔符判斷,如圖2所示,下劃線為分隔符,矩形框為水印信息。若在分隔符后有完整的水印信息,則將其提取即可,可在一定程度上保證水印方法的魯棒性。
[0113]表1水印容量統(tǒng)計
【權(quán)利要求】
1.一種文檔多重數(shù)字水印嵌入方法,其特征在于,包括以下步驟: 步驟1:獲取用戶輸入的原始水印信息、密鑰及待處理的文檔; 步驟2:利用摘要算法計算原始水印信息中的摘要信息,生成新水印信息,根據(jù)新水印信息得到新水印信息位的長度; 步驟3:將原始水印信息和新水印信息共同作為一條數(shù)據(jù)庫記錄存入數(shù)據(jù)庫,用于提取水印時查詢原始水印信息; 步驟4:將文檔中的字符劃分為兩層,根據(jù)文檔第一層的字符總數(shù)、新水印信息位的長度,得到待嵌入文檔第一層的新水印信息的組數(shù),按照從前往后的順序?qū)⒍嘟M新水印信息分別嵌入到文檔第一層中的屬性位中,多組新水印信息之間利用分隔符分隔; 步驟5:按照從后往前的順序?qū)⒍嘟M新水印信息分別嵌入到文檔第二層中的屬性位中,多組新水印信息之間利用分隔符分隔,嵌入文檔第二層中新水印信息的組數(shù)為嵌入文檔第一層中新水印信息的組數(shù)的二倍。
2.根據(jù)權(quán)利要求1所述的文檔多重數(shù)字水印嵌入方法,其特征在于:將文檔中的字符劃分為兩層的方法具體包括以下步驟: 獲取用作密鑰的字符的Unicode編碼,將用作密鑰的字符的Unicode編碼轉(zhuǎn)化為二進制序列,將二進制序列的最后兩位作為密鑰序列; 獲取文檔中所有 字符的Unicode編碼,將文檔中每個字符的Unicode編碼分別轉(zhuǎn)化為二進制序列; 將密鑰序列分別與文檔中每個字符轉(zhuǎn)化成的二進制序列進行異或操作,若結(jié)果為00、10,則將該字符劃分為文檔第一層;若結(jié)果為01、11,則劃分為文檔第二層。
3.根據(jù)權(quán)利要求1所述的文檔多重數(shù)字水印嵌入方法,其特征在于:所述分隔符為Unicode編碼中任意不常用的非可見字符的二進制序列。
4.根據(jù)權(quán)利要求1所述的文檔多重數(shù)字水印嵌入方法,其特征在于:將多組新水印信息分別嵌入到文檔中的不同屬性位具體包括以下步驟: 對于第一層,分別修改第一層中所有字符的NoProofing屬性值,若當(dāng)前待嵌入的新水印信息為1,則將NoProofing屬性值修改為True,否則,保持原始值False不變; 對于第二層,分別修改第二層中所有字符的LanguageIDOther屬性值,若當(dāng)前待嵌入的新水印信息為00,則保持原始值不變,若當(dāng)前待嵌入的新水印信息位為01,則修改LanguageIDOther屬性值為wdBasque,若當(dāng)前待嵌入的新水印信息位為10,則修改LanguageIDOther屬性值為wdVenda,若當(dāng)前待嵌入的新水印信息位為11,則修改LanguageIDOther 屬性值為 wdEstonian。
5.一種文檔多重數(shù)字水印提取方法,其特征在于,包括以下步驟: 步驟Ia:檢測待處理的文檔中是否嵌入水印信息,如果是,所有字符按規(guī)則分為兩層,轉(zhuǎn)入步驟2a,否則,結(jié)束處理; 步驟2a:在文檔第一層的屬性位中提取水印信息,在文檔第二層的屬性位中提取水印信息,分別根據(jù)分隔符來得到每層提取的水印信息的實際提取組數(shù); 步驟3a:根據(jù)文檔第一層的字符總數(shù)、在文檔的第一層和第二層中提取出的水印信息位的長度,分別得到嵌入文檔第一層及第二層的水印信息的預(yù)定提取組數(shù); 步驟4a:當(dāng)提取出的多組水印信息一致且均匹配到一條數(shù)據(jù)庫記錄、每層的實際提取組數(shù)與預(yù)定提取組數(shù)均相等時,則所有水印信息正常,文檔沒有遭到攻擊,查詢數(shù)據(jù)庫后輸出原始水印信息;否則,進行水印糾錯。
6.根據(jù)權(quán)利要求5所述的文檔多重數(shù)字水印提取方法,其特征在于:所述步驟4a中當(dāng)提取出的多組水印信息一致且均匹配到一條數(shù)據(jù)庫記錄、每層的實際提取組數(shù)與預(yù)定提取組數(shù)均相等時,還包括在文檔第二層中的屬性位中提取出的水印信息的組數(shù)為在文檔第一層中的屬性位中提取的水印信息的組數(shù)的二倍時,所有水印信息正常。
7.根據(jù)權(quán)利要求5所述的文檔多重數(shù)字水印提取方法,其特征在于,所述步驟Ia中水印信息的檢測方法為: 文檔中每個字符的NoProofing屬性值和LanguageIDOther屬性值被系統(tǒng)預(yù)定為默認(rèn)值,逐個檢測待提取水印信息的文檔中每個字符的字符屬性,若存在NoProofing屬性值和LanguageIDOther屬性值與默認(rèn)值不同的字符,則該文檔為嵌入水印信息的文檔,否則,該文檔為未嵌入水印信息 的文檔。
8.根據(jù)權(quán)利要求5所述的文檔多重數(shù)字水印提取方法,其特征在于:所述水印糾錯具體包括以下步驟: 步驟3a.1:按分隔符提取的多組水印信息,若多組水印信息不完全一致,且至少一組水印信息匹配到一條數(shù)據(jù)庫記錄時,返回提取出的水印信息并提示文檔受損情況;否則,轉(zhuǎn)3a.2 ; 步驟3a.2:若多組水印信息均不與任一數(shù)據(jù)庫記錄匹配,提示文檔受損嚴(yán)重,提取出水印信息失敗。
9.一種文檔多重數(shù)字水印嵌入裝置,其特征在于:包括獲取模塊(1),生成模塊(2),存儲模塊(3),第一嵌入模塊(4)和第二嵌入模塊(5); 所述獲取模塊(1),用于獲取用戶輸入的原始水印信息、密鑰及待處理的文檔; 所述生成模塊(2),用于利用摘要算法計算原始水印信息中的摘要信息,生成新水印信息,根據(jù)新水印信息得到新水印信息位的長度; 所述存儲模塊(3),用于將原始水印信息和新水印信息共同作為一條數(shù)據(jù)庫記錄存入數(shù)據(jù)庫,用于提取水印時查詢原始水印信息; 所述第一嵌入模塊(4),用于將文檔中的字符劃分為兩層,根據(jù)文檔第一層的字符總數(shù)、新水印信息位的長度,得到待嵌入文檔第一層的新水印信息的組數(shù),按照從前往后的順序?qū)⒍嘟M新水印信息分別嵌入到文檔第一層中的屬性位中,多組新水印信息之間利用分隔符分隔; 所述第二嵌入模塊(5),用于按照從后往前的順序?qū)⒍嘟M新水印信息分別嵌入到文檔第二層中的屬性位中,多組新水印信息之間利用分隔符分隔,嵌入文檔第二層中新水印信息的組數(shù)為嵌入文檔第一層中新水印信息的組數(shù)的二倍。
10.一種文檔多重數(shù)字水印提取裝置,其特征在于:包括檢測模塊(6),提取模塊(7),計算模塊(8)和匹配模塊(9); 所述檢測模塊(6),用于檢測待處理的文檔中是否嵌入水印信息,如果是,所有字符按規(guī)則分為兩層,轉(zhuǎn)入提取模塊(7),否則,結(jié)束處理; 所述提取模塊(7),用于在文檔第一層的屬性位中提取水印信息,在文檔第二層的屬性位中提取水印信息,分別根據(jù)分隔符來得到每層提取的水印信息的實際提取組數(shù);所述計算模塊(8),用于根據(jù)文檔第一層的字符總數(shù)、在文檔的第一層和第二層中提取出的水印信息位的長度,分別得到嵌入文檔第一層及第二層的水印信息的預(yù)定提取組數(shù);所述匹配模塊(9),用于當(dāng)提取出的多組水印信息一致且均匹配到一條數(shù)據(jù)庫記錄、每層的實際提取組數(shù)與預(yù)定提取組數(shù)均相等時,則所有水印信息正常,文檔沒有遭到攻擊,查詢數(shù)據(jù)庫后輸 出原始水印信息;否則,進行水印糾錯。
【文檔編號】G06F17/22GK103761459SQ201410035906
【公開日】2014年4月30日 申請日期:2014年1月24日 優(yōu)先權(quán)日:2014年1月24日
【發(fā)明者】陳小軍, 時金橋, 徐睿, 蒲以國, 趙亮, 張銳 申請人:中國科學(xué)院信息工程研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1