專利名稱:一種基于xml電子文檔的水印隱藏和提取方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種水印隱藏和提取方法,尤其涉及一種XML文檔的水印隱藏 和提取方法。
背景技術(shù):
數(shù)字水印作為一種新穎的信息隱藏技術(shù),為解決開放性網(wǎng)絡(luò)上的版權(quán)保護、 來源認證、篡改認證、網(wǎng)上發(fā)行、用戶跟蹤和身份認證等一系列問題提供了嶄 新的解決思路。但現(xiàn)在人們大多把注意力集中到了針對數(shù)字圖像、音頻和視頻 的數(shù)字水印技術(shù)的研究,涉及到以文檔和二值圖像作為載體的數(shù)字水印算法的 研究卻很少,以文檔和二值圖像作為載體的數(shù)字水印算法的設(shè)計難點在于文檔 或二值圖像僅僅用兩個不同的灰度值就能表示整個圖像,幾乎沒有什么紋理和 細節(jié)可言,有的僅僅是不同的幾何形狀,利用這樣的載體很難設(shè)計出符合數(shù)字 水印要求的方法來。己有的水印隱藏方法大都是把文檔當(dāng)作圖片進行處理,在 像素級別上隱藏水印信息。這樣對文檔進行修訂或修改時水印便消失了,而本 發(fā)明所研究的主要是電子文檔這類往往又需要審核修改并及時進行批復(fù)的文 檔。所以針對以上問題,本發(fā)明研究出了基于XML的電子文檔水印處理方法, XML文檔具有可移植性,且與平臺無關(guān),對文檔進行修改或刪除后,對應(yīng)的內(nèi) 容在XML中仍然有相關(guān)標(biāo)記進行描述,所以這種水印處理方法在文檔修訂狀態(tài) 下也能正確的隱藏和提取水印信息。
XML語言有很多優(yōu)點,所以讓本發(fā)明的水印隱藏方法與其它的方法相比也 有很多優(yōu)點l.簡單易用。本發(fā)明所采用的水印隱藏技術(shù)著手致力于對文字的字 間距進行修改,所以添加完本發(fā)明的水印信息后,并不影響文檔的顯示。2.通用20 性很好。對任何字號,任何字體的文檔都能很好的隱藏本發(fā)明的水印信息并能
提取出本發(fā)明隱藏的水印信息,所以本發(fā)明具有很好的通用性。3.與XML語言 很好的結(jié)合?;赬ML的電子文檔的水印隱藏的研究是在文檔轉(zhuǎn)化為XML文 檔的基礎(chǔ)上來隱藏本發(fā)明的水印信息的,所以本發(fā)明可以利用XML本身的強大 功能。4.具有很好的擴展性。利用XML語言和本發(fā)明所研究的水印隱藏方法對 今后研究隱藏音頻視頻水印信息都有很好的借鑒。使本發(fā)明今后的研究有很好 的擴展功能。
發(fā)明內(nèi)容
針對現(xiàn)有的水印隱藏和提取方法對文檔進行修訂或修改時水印便會消失的 問題,本發(fā)明為解決這一問題提出了一種基于XML的電子文檔水印隱藏和提取方法。
本發(fā)明采取的技術(shù)方案如下
一種基于XML電子文檔的水印隱藏方法,包括以下步驟
al)檢査電子文檔是否為XML格式,如果不是,則將其轉(zhuǎn)換為XML格式;
a2)指定多種不同的字間距表示多種不同的信息;
a3)將水印信息轉(zhuǎn)換為二進制比特流,并分為多個二進制比特段;
a4)用每個字間距表示一段所述二進制比特段,依次將XML文檔中文字的字間
距修改為不同的指定字間距。
所述的水印隱藏方法,所述步驟a2還包括^ a21)根據(jù)指定字間距的種類數(shù),確定每個字間距表示信息的比特數(shù);當(dāng)指定字 間距為a和b兩種時,利用字間距"代表比特信息1,用字間距6代表比特信息 0,則每2個字之間可以隱藏一個比特信息;當(dāng)指定字間距為z種時,則每兩個 字之間可以隱藏/=log2z個比特信息,z和/為正整數(shù)a22)對指定字間距進行編碼一 一 以z種為例,將上述字間距按照從第0種到第 z—l種的順序編號(O, 1, 2, 3,…,z—l}, {b0, b!,b2, b3,, b^表示與字間 距相對應(yīng)的z種二進制比特段,各個比特段長度為/。
所述的水印隱藏方法,所述步驟a3還包括 a31)將需要隱藏的水印信息『轉(zhuǎn)化為二進制比特流B;
a32)利用密鑰Key對二進制比特流B進行置亂,得到置亂后的二進制比特流
Bl;
a33)在轉(zhuǎn)化的二進制比特流B1前加入長度為log2 /的包頭構(gòu)成的二進制比特流 B2,包頭表示補O的個數(shù);
a34)并在B2后面補充0構(gòu)成長度為/的整數(shù)倍的二進制比特流B3;
a35)然后將B3進行分段處理,將二進制比特流B3劃分為若干個長度為/比特
的比特段,BitP Bit2…Bitj…,i為正整數(shù)。
所述的水印隱藏方法,在所述步驟a33中,包頭設(shè)置為長度為k比特的比 特段a,a2a3…ak, k=log2/,對轉(zhuǎn)化的二進制比特流B2進行判斷,設(shè)[丄e"(S2)]//= m, Len函數(shù)表示取二進制比特流B2的長度,m表示取整,[丄e"(S2)]mod/="," 表示余數(shù),若二進制比特流B2的長度不是分段長度/的整數(shù)倍時,在B2的末 尾補上/-"個比特的0后得到新二進制比特流B3,其比特流長度為/的整數(shù)倍; 并設(shè)置B3的包頭比特段a^a3…ak的二進制數(shù)值為補充的0的個數(shù)。
所述的水印隱藏方法,所述步驟a4還包括步驟 a41)根據(jù)字間距{0, 1, 2, 3,…,z—l)與二進制比特段(bo,bi,b2,b3,…,b^ 的對應(yīng)關(guān)系,將劃分的若干長度為/的二進制比特段Biti代表的水印信息分別隱 藏到文檔中,即將字間距逐一修改為二進制比特段對應(yīng)的字間距的距離; a42)將XML文檔的字間距的修改為不同的字間距則是通過找到XML文檔的字間距描述標(biāo)記,修改相應(yīng)的值。
一種基于XML的電子文檔的水印提取方法,包括如下步驟
bl)檢查電子文檔是否為XML格式,如果不是,則將其轉(zhuǎn)換為XML格式; b2)根據(jù)預(yù)先指定的不同字間距的種數(shù),確定每個字間距表示的二進制比特段; b3)從電子文檔中讀取字間距,判斷字間距的值,將字間距轉(zhuǎn)化為步驟b2中對 應(yīng)的二進制比特段;
b4)將各二進制比特段組合成二進制比特流,并轉(zhuǎn)換為相應(yīng)的水印信息。
所述的水印提取方法,所述步驟b2包括, b21)根據(jù)指定字間距的種類數(shù),確定每個字間距表示信息的比特數(shù);當(dāng)指定字 間距為兩種時,利用字間距fl代表比特信息l,用字間距6代表比特信息0,則 每2個字之間可以提取一個比特信息;當(dāng)指定字間距為z種時,則每兩個字之間 可以提取Hog-個比特信息,z和/為正整數(shù);
b22)對預(yù)先指定的z種指定字間距進行譯碼,即將字間距按照從第0種到第z 一1種的順序編號{0, 1, 2, 3,, z—l),各個字間距表示為與其相對應(yīng)的z 種二進制比特段(bo,b,,b2,b3,…,bj,各個比特段長度為/比特,/=log2z。
所述的水印提取方法,所述步驟b3包括 b31)對字間距進行判斷時,將每兩個字之間的字間距按照和編碼相同的規(guī)則進
行譯碼,即根據(jù)字間距{0, 1, 2, 3,, Z—l)與二進制比特段(b(),b2,b3,…,bz—J
的對應(yīng)關(guān)系,轉(zhuǎn)換為每個字間距對應(yīng)的二進制比特段Bitt, Bit2…Biti, i為正整 數(shù),將各二進制比特段合并得到二進制比特流B3;
b32)字間距的讀取是通過找到XML文檔的字間距描述標(biāo)記,讀取出相應(yīng)的值。
所述的水印提取方法,所述步驟b4包括, b41)對二進制比特流B3,其前k個比特aia2a3…ak是包頭,k為log2/, /表示每兩個字之間嵌入的比特段長度,根據(jù)包頭的二進制數(shù)值確定二進制比特流B3
末尾補0的個數(shù);
b42)去除二進制比特流B3末尾的補0得到二進制比特流B2;
b43)對得到的二進制比特流B2,去除長度為k的包頭a^2a3.,.ak,得到二進制
比特流B1;
b44)然后利用密鑰Key對得到的二進制比特流Bl進行置亂恢復(fù),得到恢復(fù)后 的序列B;
b45)最后將二進制比特流B轉(zhuǎn)化為水印信息W。 本發(fā)明相對于現(xiàn)有技術(shù)的有益效果
1. 用不同的字間距代表不同的水印信息,可以通過修改字間距達到隱藏本發(fā) 明的水印信息的目的,肉眼無法察覺,因而隱蔽性很好。
2. 將需要隱藏的水印信息轉(zhuǎn)化為二進制比特流.將字間距逐一修改為二進 制比特流對應(yīng)的距離,實現(xiàn)了用少量文字隱藏大量信息的目的。
3. 將各種水印信息W進行轉(zhuǎn)化,轉(zhuǎn)化為二進制比特流B,提取時也是將所 得的比特流B轉(zhuǎn)化為水印信息W,從而使算法具有通用性,水印信息W可以是 漢字也可以是圖片。
圖1:水印隱藏過程;
圖2:水印提取過程;
圖3: WORD的XML文檔層次圖4: WORD的XML文檔文字部分〈w:body〉的層次圖。
具體實施例方式
如圖1所示,簡要概括本發(fā)明的水印隱藏方法為首先對原始文檔1進行 判斷,并轉(zhuǎn)化為XML文檔2,然后指定間距3,將要隱藏的水印信息轉(zhuǎn)化為二 進制比特流4,在轉(zhuǎn)化過程中需要進行添加包頭和補零5的處理,對前述處理的 二進制比特流進行分段劃分6,實現(xiàn)隱藏水印7,至此對文檔的水印隱藏結(jié)束, 得到水印文檔8。
如圖2所示,水印的提取方法為隱藏方法的逆過程,簡要概括如下首先 對水印文檔9進行判斷,并轉(zhuǎn)化為XML文檔10,然后進行字間距判斷11,提 取出字間距對應(yīng)的二進制比特段12,并將二進制比特段進行合并,得到二進制 比特流13,并對得到的二進制比特流進行去除包頭和末尾補O的處理M,然后 將其轉(zhuǎn)化為水印信息15,至此對水印的提取結(jié)束,提取出水印16。
下面通過具體實施例,對本發(fā)明進一步進行闡述,以下為具體實施例l。
a)水印嵌入過程
1. 對于一篇電子文檔首先檢查電子文檔是否為XML格式,如果不是,則 將其轉(zhuǎn)換為XML格式,然后對其進行水印的隱藏。基本原理利用不同的字間 距表示不同的信息;文字本身不發(fā)生任何改變,人眼幾乎察覺不到變化。實施 手段通過修改XML文檔中相應(yīng)的字間距描述標(biāo)記來達到隱藏水印信息的目 的。
2. 對指定距離進行編碼,當(dāng)有兩種指定間距時,利用字間距"代表比特信息 1,用字間距6代表比特信息0,本實施例中本發(fā)明設(shè)有4種指定距離——字間 距的順序編號為{0, 1, 2, 3},各個字間距代表的比特段長度為2,各個編號對 應(yīng)的二進制比特段為{00, 01, 10, 11}。
3. 將需要隱藏的水印信息『設(shè)為漢字"機密文件"并通過算法將其轉(zhuǎn)化為641 ^二進制比特流8=
算法利用md5產(chǎn)生密鑰Key對水印序列B進行置亂,得到置亂后的序列Bl=
頭長度為k-log擊l,補充的O的個數(shù)為1,包頭的二進制數(shù)值為l,得到加包頭 的二進制比特流82=
末尾補充0的比特流83= "iininini 1 ini 11n1n1 ini
然后將二進制比特流B3進行分段處理。因為總共有4種指定字間距,每兩個字 符之間可以隱藏2比特信息。因此,將二進制比特流B劃分為33個長度為2的 段,Bitl, Bit2…Biti。
4. 根據(jù)字間距與二進制比特段{00, 01, 10, 11}的對應(yīng)關(guān)系,將劃分的若干 長度為2的段的水印信息分別隱藏到文檔中,即將字間距逐一修改為二進制比 特段對應(yīng)的距離。本發(fā)明總共有4種指定距離,故每兩個字之間可以隱藏2bits 水印信息,使用限制每n個字符可以隱藏2(n-l)個比特,如果少于這個字數(shù), 水印信息不能全部隱藏于文檔中,沒有對字符本身的限制,所以本例中為了實現(xiàn) 比特流全部嵌入我們要求漢字數(shù)必須多于34個。
5. 隱藏水印時主要方法是找到對應(yīng)的XML描述標(biāo)記并修改相應(yīng)標(biāo)記的內(nèi)容 來改變文字的字間距。首先如圖3所示找到正文標(biāo)記〈w:body〉,然后如圖4所示 找到文字描述標(biāo)記〈w^提取出其中的文字,最后找到字間距描述標(biāo)記 〈w:spacing〉修改其對應(yīng)的字間距,標(biāo)準字間距中,〈w:spacing〉的值value為0, 隱藏水印時本發(fā)明規(guī)定比特段00代表將標(biāo)準字間距緊縮0.05磅,<W:SpaCing>的value值變?yōu)?l; 01代表將兩個字的標(biāo)準字間距緊縮0.1磅,〈w:spacing〉的 value值變?yōu)?2; 10代表將標(biāo)準字間距加寬0.05磅,〈w:spacing〉的value值變?yōu)?1; 11代表將標(biāo)準字間距加寬1磅,〈w:spacing〉的value值變?yōu)?。所以實現(xiàn)了 2個bits代表4種距離。加入本發(fā)明隱藏的水印信息為漢字"機密文件",水印 添加程序首先將其轉(zhuǎn)化為二進制比特流,進而將對應(yīng)的字間距變化信息隱藏到 XML文檔中去。
b)提取水印過程
6. 提取水印信息時-----對得到的文檔進行譯碼,將每兩個字之間的字間距按 照和編碼相同的規(guī)則進行譯碼,根據(jù)字間距與二進制比特流{00, 01, 10, 11} 的對應(yīng)關(guān)系,提取出每個字間距對應(yīng)的二進制比特段Biti。
7. 提取出本發(fā)明的水印信息時是通過檢查每兩個字之間的字間距并與原始 字間距進行比較。方法也還是找到文字描述標(biāo)記〈w:t、然后找到字間距描述標(biāo) 記〈w:spacing〉,將其對應(yīng)的字間距與標(biāo)準字間距進行比較。因為標(biāo)準字間距 〈w:spacing〉的value值為0,如果〈w:spacing〉的value值為-1,則代表字間距緊 縮0.05磅,則提取比特段為00;如果〈w:spacing〉的value值為-2,則代表字間 距緊縮0,1磅,則提取的比特段為01;如果〈w:spadng〉的value值為1,則代表 字間距加寬0.05磅,則提取的比特段是10;如果〈w:spacing〉的value值為2, 則代表字間距加寬l磅,則提取的比特段是ll;然后將提取的二進制比特段合 并為比特流并轉(zhuǎn)化為漢字,最終得到的水印信息為"機密文件"??梢姳景l(fā)明 的水印程序能正確的提取出水印信息。
8. 并將提取出的二進制比特段Biti, Bit2…Biti…合成為二進制比特流B3= "110101011101110101101001111011100110011101101010010111110111111000"
其前k個比特代表包頭信息,包頭長度k=log2/=l,包頭的二進制數(shù)值表示末尾補0的個數(shù),得到補充的0的個數(shù)為1,去除最末補0,得到B2=
對其利用md5產(chǎn)生密鑰Key進行置亂恢復(fù)得到二進制比特流B=
后將其轉(zhuǎn)化為相應(yīng)的水印信息W "機密文件"。
9. 若對本發(fā)明的文檔進行修改,如刪除文檔中的文字或添加修訂。發(fā)現(xiàn)也能 正確的提取出水印信息,進而證明本發(fā)明的水印方法可以在修訂模式下能正確 的提取出水印信息。對刪除文檔進行水印的提取時,必須找到文字刪除標(biāo)記 〈w:deltext^然后找到對應(yīng)的字間距描述標(biāo)記〈w:spacing〉進行同樣的水印提取過 程。
10. 在對電子文檔添加表格和修改字體字號的情況下,本發(fā)明也能正確的添 加和提取水印信息,證明本發(fā)明的水印處理方法和程序具有較好的通用性。
具體實施例2:
實施例1中我們嵌入的水印信息為漢字而實施例2中嵌入的水印信息為圖 片,另外每兩個字之間嵌入的水印信息也由2bits表示4種距離提高到了 3bits 表示8種距離,因此嵌入的容量提高了,包頭和補O都做了相應(yīng)的改變。
下面通過具體實施例2,對本發(fā)明進一步進行闡述,以下為具體實施例2實 施過程。
a)水印嵌入過程
l.對于一篇電子文檔首先檢査電子文檔是否為XML格式,如果不是,則 將其轉(zhuǎn)換為XML格式,然后對其進行水印的隱藏?;驹砝貌煌淖珠g距表示不同的信息,文字本身不發(fā)生任何改變;人眼幾乎察覺不到變化。實施 手段通過修改XML文檔中相應(yīng)的字間距描述標(biāo)記的值來達到隱藏水印信息的 目的。
2. 對指定距離進行編碼,當(dāng)有兩種指定間距時,利用字間距a代表比特信 息1,用字間距6代表比特信息0,本實施例中設(shè)有8種指定距離——字符距離 的順序編號為{0, 1, 2, 3, 4, 5, 6, 7},比特流長度為3,各個編號對應(yīng)的二 進制比特段為{000, 001, 010, 011, 100, 101, 110, 111}。
3. 將需要隱藏的水印信息『設(shè)為圖片G并通過算法將其轉(zhuǎn)化為64bits二進 制比特流B二
"1011101111111010110000111101110011001110110001001011110011111110",本 算法利用md5產(chǎn)生密鑰Key對水印序列B進行置亂,得到置亂后的序列Bl=
"1010101110111010110000101101110111001110110111101011110011101110",包 頭長度為k-log2^2,補充的0的個數(shù)為0,得到加包頭的二進制比特流B2=
"001010101110111010110000101101110111001110110111101011110011101110",
然后將二進制比特流B3進行分段處理。因為總共有S種指定字間距,每兩個字 符之間可以隱藏3比特信息。因此,將二進制比特流B劃分為22個長度為3的 段,Bitl, Bit2…Biti…。
4. 根據(jù)字間距與二進制比特段{000, 001, 010, 011, 100, 101, 110, 111} 的對應(yīng)關(guān)系,將劃分的若干長度為3的段的水印信息分別隱藏到文檔中,即將 字間距逐一修改為二進制比特段對應(yīng)的距離。本發(fā)明總共有8種指定距離,故 每兩個字之間可以隱藏3bits水印信息,使用限制每n個字符可以隱藏3(n-l)個比特,如果少于這個字數(shù),水印信息不能全部隱藏于文檔中;沒有對字符本 身的限制,所以本例中我們要求漢字數(shù)必須多于23個。
5. 隱藏水印時主要方法是找到對應(yīng)的XML文檔的相應(yīng)的描述標(biāo)記并修改 相應(yīng)標(biāo)記的內(nèi)容來改變文字的字間距。首先如圖3所示找到正文標(biāo)記〈w:body、 然后如圖4所示找到文字描述標(biāo)記〈w:^提取出其中的文字,最后找到字間距描 述標(biāo)記〈w:spacing〉修改其對應(yīng)的字間距,標(biāo)準字間距中,〈w:spacing〉的值value 為0,隱藏水印時本發(fā)明規(guī)定比特段000代表將標(biāo)準字間距緊縮0.05磅, 〈w:spacing〉的value值變?yōu)?h 001代表將兩個字的標(biāo)準字間距緊縮0.1磅, 〈w:spacing〉的value值變?yōu)?2; 010代表將標(biāo)準字間距緊縮0.15磅,<w:spacing> 的value值變?yōu)?3; 011代表將標(biāo)準字間距緊縮0.2磅,〈w:spacing〉的value值變 為-4; 100代表將標(biāo)準字間距加寬0.05磅,〈w:spacing〉的value值變?yōu)?; 101 代表將兩個字的標(biāo)準字間距加寬0.1磅,〈w:spacing〉的value值變?yōu)?; 110代 表將標(biāo)準字間距加寬0.15磅,〈w:spacing〉的value值變?yōu)?; 111代表將標(biāo)準字 間距加寬0.2磅,〈w:spacing〉的value值變?yōu)?。所以實現(xiàn)了 3個bits代表8種 距離。加入本發(fā)明隱藏的水印信息為圖片G,水印添加程序首先將其轉(zhuǎn)化為二 進制比特流,進而將對應(yīng)的字間距變化信息隱藏到XML文檔中去。
b)提取水印過程
6. 提取水印信息時——對得到的文檔進行譯碼,將每兩個字之間的字間距按 照和編碼相同的規(guī)則進行譯碼,根據(jù)字間距與二進制比特段{000, 001, 010, 011, 100, 101, 110, 111}的對應(yīng)關(guān)系,提取出每個字間距對應(yīng)的二進制比特段 Biti。
7. 提取出本發(fā)明的水印信息。檢查每兩個字之間的字間距并與原始字間距進 行比較。方法也還是找到文字描述標(biāo)記<^.1>,然后找到字間距描述標(biāo)記<W:Spacing>,將其對應(yīng)的字間距與標(biāo)準字間距進行比較。因為標(biāo)準字間距 〈w:spacing〉的value值為0,如果〈w:spacing〉的value值為-1 ,則代表字間距緊 縮0.05磅,則對應(yīng)的比特段為000;如果〈w:spacing〉的value值為-2,則代表字 間距緊縮O.l磅,則對應(yīng)的比特段為001;如果〈w:spacing〉的value值為-3,則 代表字間距緊縮0.15磅,則對應(yīng)的比特段為010;如果〈w:spacing〉的value值為 -4,則代表字間距緊縮0.2磅,則對應(yīng)的比特段為011;如果〈w:spacing〉的value 值為1,則代表字間距加寬0.05磅,則對應(yīng)的比特段是100;如果《w:spacing〉 的value值為2,則代表字間距加寬1磅,則對應(yīng)的比特段是101;如果〈w:spacing〉 的value值為3,則代表字間距加寬0.15磅,則對應(yīng)的比特段是110;如果 〈w:spacing〉的value值為4,則代表字間距加寬2磅,則對應(yīng)的比特段是lll; 然后將比特段合并為比特流,最后將提取的二進制比特流轉(zhuǎn)化為圖片,得到水 印信息為圖片G'??梢姳景l(fā)明的水印程序能正確的提取出水印信息。
8.并將提取出的二進制比特段Bit,, Bit2…Biti…合成為二進制比特流B3=
其前k個比特代表包頭信息,包頭長度k=log2/=2,包頭的二進制數(shù)值表示末尾 補0的個數(shù),包頭長度為k=log2/=2,其二進制數(shù)值為0得到補充的0的個數(shù)為0, 去 除 補 0 , B2=
"001010101110111010110000101101110111001110110111101011110011101110",
去除包頭得
并對其利用md5產(chǎn)生密鑰Key進行置亂恢復(fù)得二進制比特流B= 化為相應(yīng)的水印W為圖片G'。9. 若對本發(fā)明的文檔進行修改,如刪除文字或添加修訂,發(fā)現(xiàn)也能正確的提 取出水印信息,進而證明本發(fā)明的水印方法可以在修訂模式下正確的提取出水
印信息。對刪除文檔進行水印的提取時,必須找到文字刪除標(biāo)記〈w:ddtext^然 后找到對應(yīng)的字間距描述標(biāo)記〈w:spacing〉進行同樣的水印的提取過程。
10. 在對電子文檔添加表格和修改字體字號,本發(fā)明也能正確的添加和提取 水印信息,證明本發(fā)明的水印處理方法和程序具有較好的通用性。
權(quán)利要求
1.一種基于XML電子文檔的水印隱藏方法,其特征在于包括以下步驟a1)檢查電子文檔是否為XML格式,如果不是,則將其轉(zhuǎn)換為XML格式;a2)指定多種不同的字間距表示多種不同的信息;a3)將水印信息轉(zhuǎn)換為二進制比特流,并分為多個二進制比特段;a4)用每個字間距表示一段所述二進制比特段,依次將XML文檔中文字的字間距修改為不同的指定字間距。
2. 根據(jù)權(quán)利要求l所述的水印隱藏方法,其特征在于所述步驟a2還包括 a21)根據(jù)指定字間距的種類數(shù),確定每個字間距表示信息的比特數(shù);當(dāng)指定字間距為Z種時,則每兩個字之間可以隱藏Z—Og2Z個比特信息,z和/為正整數(shù);a22)對z種指定字間距進行編碼一一將上述字間距按照從第0種到第z—l 種的順序編號{0, 1, 2, 3,, z—l}, {bo, h,b2, b3,…,bzj表示與字間距相 對應(yīng)的z種二進制比特段,各個比特段長度為/。
3. 根據(jù)權(quán)利要求1所述的水印隱藏方法,其特征在于所述步驟a3還包括 a31)將需要隱藏的水印信息轉(zhuǎn)化為二進制比特流B;a32)利用密鑰Key對二進制比特流B進行置亂,得到置亂后的二進制比特 流B1;a33)在置亂后的二進制比特流Bl前加入長度為log2 /的包頭構(gòu)成二進制比 特流B2,包頭的二進制數(shù)值表示補0的個數(shù);a34)并在B2后面補充0構(gòu)成長度為/的整數(shù)倍的二進制比特流B3;a35)然后將B3進行分段處理,將二進制比特流B3劃分為長度為/比特的 比特段,Bit,Bit2…Biti…,i為正整數(shù)。
4. 根據(jù)權(quán)利要求3所述的水印隱藏方法,其特征在于在所述步驟a33和a34中,包頭設(shè)置為長度為k比特的比特段aia2a3...ak, k=log2/,對轉(zhuǎn)化的二進制比特流B2進行判斷,設(shè)[^"(52)]// = m, Len函數(shù)表示取二進制比特流B2的長度m表示取整,[Ze"(^2)]mod/ = ", w表示余數(shù),若二進制比特流B2的長度不是分段長度/的整數(shù)倍時,在B2的末尾補上/-"個比特的0后得到新二進制比特流B3,其比特長度為/的整數(shù)倍;并設(shè)置B3的包頭比特段a,a2a3…ak的二進制數(shù)值為補充的0的個數(shù)。
5. 根據(jù)權(quán)利要求1所述的水印隱藏方法,其特征在于所述步驟a4還包括步驟a41)根據(jù)字間距(0, 1, 2, 3,…,Z—U與二進制比特段(bo,b!,b2,b3,…,by)的對應(yīng)關(guān)系,將劃分的若干長度為/的二進制比特段Biti代表的水印信息分別隱藏到文檔中,即將字間距逐一修改為二進制比特段對應(yīng)的字間距的距離;a42)將XML文檔的字間距修改為不同的字間距則是通過找到XML文檔的字間距描述標(biāo)記,修改相應(yīng)的值。
6. —種基于XML的電子文檔的水印提取方法,其特征在于包括如下步驟bl)檢査電子文檔是否為XML格式,如果不是,則將其轉(zhuǎn)換為XML格式;b2)根據(jù)預(yù)先指定的不同字間距的種數(shù),確定每個字間距表示的二進制比特段;b3)從電子文檔中讀取字間距,判斷字間距的值,將字間距轉(zhuǎn)化為b2)中對應(yīng)的二進制比特段;b4)將各二進制比特段組合成二進制比特流,并轉(zhuǎn)換為相應(yīng)的水印信息。
7. 根據(jù)權(quán)利要求6所述的水印提取方法,其特征在于所述步驟b2包括,b21)根據(jù)指定字間距的種類數(shù),確定每個字間距表示信息的比特數(shù);當(dāng)指定字間距為z種時,則每兩個字之間可以提取/=10§-個比特信息,z和/為正整數(shù);b22)對預(yù)先指定的z種指定字間距進行譯碼,即將字間距按照從第0種到第z—l種的順序編號{0, 1, 2, 3,…,z—1},各個字間距表示為與其相對應(yīng)的Z種二進制比特段(bo,bbb2,b3,…,b^,各個比特段長度為/比特,Hk)g-。
8. 根據(jù)權(quán)利要求6所述的水印提取方法,其特征在于所述步驟b3包括,b31)對字間距進行判斷時,將每兩個字之間的字間距按照和編碼相同的規(guī)則進行譯碼,即根據(jù)字間距(O, 1, 2, 3,…,Z—l)與二進制比特段(b。,b2,b3,…,b^J的對應(yīng)關(guān)系,轉(zhuǎn)換為每個字間距對應(yīng)的二進制比特段Bi", Bit2…Bitj…,將各二進制比特段合并得到二進制比特流B3;b32)字間距的讀取是通過找到XML文檔的字間距描述標(biāo)記,讀取出相應(yīng)的值。
9. 根據(jù)權(quán)利要求6所述的水印提取方法,其特征在于所述步驟b4包括,b41)對二進制比特流B3,其前k個比特aia2a3...ak是包頭,k為log2/, /表示每兩個字之間嵌入的比特段長度,根據(jù)包頭的二進制數(shù)值確定二進制比特流B3末尾補O的個數(shù);b42)去除二進制比特流B3末尾的補0得到二進制比特流B2;b43)對得到的二進制比特流B2,去除長度為k的包頭a向a3.,.ak,得到二進制比特流B1;b44)然后利用密鑰Key對得到的二進制比特流Bl進行置亂恢復(fù),得到恢復(fù)后的序列B;b45)最后將二進制比特流B轉(zhuǎn)化為水印信息。
全文摘要
本發(fā)明公開了一種基于XML電子文檔的水印隱藏和提取方法,屬于信息隱藏技術(shù)領(lǐng)域,本發(fā)明通過將文檔轉(zhuǎn)化為XML文檔,然后改變文檔中文字的字間距來隱藏水印信息,不同的字間距代表不同的水印信息,改變字間距是通過改變XML字間距描述標(biāo)記的值來實現(xiàn)的。比較文檔中文字的字間距來提取水印信息,字間距的提取也是通過XML字間距描述標(biāo)記的值得到的。因為XML文檔具有可移植性且與平臺無關(guān),所以使得本發(fā)明的水印隱藏和提取方法可以在文檔的修訂狀態(tài)下正確的添加和提取水印信息。本發(fā)明隱藏水印信息時在任何字體字號下都適用,并不影響文檔的顯示而且具有很好的通用性,實現(xiàn)了少量文字隱藏大量水印信息的目的。
文檔編號G06F17/22GK101639828SQ20091009238
公開日2010年2月3日 申請日期2009年9月11日 優(yōu)先權(quán)日2009年9月11日
發(fā)明者李丹丹, 章春娥, 虹 肖, 裘正定 申請人:北京交通大學(xué)