專利名稱::基于pdf交叉引用表的pdf文件信息嵌入和提取方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于多媒體信號處理領(lǐng)域,具體涉及一種基于PDF交叉引用表的PDF文件信息嵌入和提取方法
背景技術(shù):
:近些年,隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展,人們開始越來越多地通過互聯(lián)網(wǎng)傳輸和獲取信息。與此同時,電子商務(wù)、電子政務(wù)等新型辦公模式正被廣泛應(yīng)用,越來越多的行政、商業(yè)文件如授權(quán)書、注冊單、合同、發(fā)票等開始以電子文檔的形式進(jìn)行流通和傳輸。但在互聯(lián)網(wǎng)這個開放的環(huán)境中,拷貝、篡改等惡意行為時刻威脅著電子文檔的版權(quán)歸屬問題,大量版權(quán)盜用、非法傳輸、信息偽造等問題層出不窮?;谶@種情況,電子文檔的數(shù)據(jù)隱藏技術(shù)日益成為版權(quán)認(rèn)證、真?zhèn)舞b定、解決糾紛的主要手段。PDF(PortableDocumentFormat)文件格式是Adobe公司開發(fā)的電子文件格式。這種文件格式在Windows、Unix、Mac等操作系統(tǒng)中都是通用的,獨(dú)立于操作系統(tǒng)平臺。I3DF文件格式可以將文字、字型、格式、顏色及獨(dú)立于設(shè)備和分辨率的圖形圖像等封裝在一個文件中。該格式文件還可以包含超文本鏈接、聲音和動態(tài)影像等電子信息,支持特長文件,集成度和安全可靠性都較高。再者,PDF文件使用了工業(yè)標(biāo)準(zhǔn)的壓縮算法,易于傳輸與儲存。上述特性使得PDF成為在Internet上進(jìn)行電子文檔發(fā)行和數(shù)字化信息傳播的理想文檔格式。因此,基于PDF文檔的信息隱藏技術(shù)的研究,對當(dāng)前的應(yīng)用環(huán)境,是有十分重要的實(shí)際意義的。下面對現(xiàn)有技術(shù)中PDF文件的結(jié)構(gòu)進(jìn)行簡要分析,以便對本發(fā)明進(jìn)行理解。如圖I所示是原始HF的文件結(jié)構(gòu)圖,包括四部分文件頭(Header),文件體(Body),交叉引用表(Cross-referencetable)和文件尾(Trailer)。文件頭標(biāo)識PDF文件版本信息;文件體由一系列的間接對象組成,基本包含了PDF文件的內(nèi)容;交叉引用表包含間接對象的地址信息,初始狀態(tài)只有一個單元;文件尾記錄PDF文件的根對象以及交叉引用表的起始地址等信息。如圖2所示,是經(jīng)過追加式更新操作的PDF文件結(jié)構(gòu)。在一次追加更新操作中,任何新的對象或者被修改的對象都會被添加到原始PDF文件尾的后面,組成新的文件體,新文件體對應(yīng)的新交叉引用單元和新文件尾也會隨著被插入到末尾。如圖3所不,是PDF文件交叉引用表不例圖。每個交叉引用表包含一定范圍內(nèi)相鄰對象號的對象詞條。每個交叉引用表以關(guān)鍵字xref為一行開始,開始的一行包含由空格分開的兩個數(shù)字,第一個數(shù)字表示該文件體中第一個對象的對象號,第二個數(shù)字表示該文件體中所有對象的數(shù)量。接下來的是對應(yīng)PDF文件每個對象的每行一條的詞條,詞條結(jié)構(gòu)是nnnnnnnnnngggggxy其中nnnnnnnnnn是10字節(jié)的偏移量,表示從PDF文件開頭到該對象開頭的字節(jié)數(shù),字節(jié)數(shù)不夠10字節(jié)的則偏移量前面的數(shù)字填零;ggggg是5字節(jié)的等級號,除去O號對象外,其它對象的交叉引用表中的初始等級號均為0,每次詞條被重用,都會被賦予一個新的等級號,最大為65535。X為對象狀態(tài)關(guān)鍵字,有n、f、eol三個狀態(tài)關(guān)鍵字,η表示正在使用的詞條,f表示已被廢棄的詞條。eol為結(jié)束符。圖3中的示例中指示了O到5—共六個對象的相關(guān)信息。
發(fā)明內(nèi)容本發(fā)明解決的技術(shù)問題是克服現(xiàn)有技術(shù)的不足,提供一種將嵌入信息嵌入到TOF文件的交叉引用表中并能從PDF文件中提取出嵌入信息以對PDF文件進(jìn)行鑒定的基于TOF交叉引用表的PDF文件信息嵌入和提取方法。利用本發(fā)明對PDF嵌入信息后能夠有效解決PDF版權(quán)認(rèn)證、真?zhèn)伪鎰e的問題,而且本發(fā)明對PDF文檔的編輯行為具有很好的魯棒性。為解決上述技術(shù)問題,本發(fā)明的技術(shù)方案如下一種基于PDF交叉引用表的PDF文件信息嵌入和提取方法,包括如下步驟(1)進(jìn)行隱藏信息嵌入,其具體是讀取原始PDF文件流;讀入二進(jìn)制隱藏信息并對其進(jìn)行編碼得到十進(jìn)制置亂序列,記錄解碼信息;根據(jù)十進(jìn)制置亂序列,生成數(shù)量等于十進(jìn)制置亂序列長度加I的內(nèi)容隨機(jī)的新對象以追加更新的方式插入原始PDF文件中,其中第I個到倒數(shù)第2個新對象的長度依次等于十進(jìn)制置亂序列中的各項(xiàng)數(shù)值;寫新對象對應(yīng)的新交叉引用表和新文件尾,完成一次追加更新,并同時生成新交叉引用表標(biāo)志;輸出含隱藏信息的PDF文件及輸出解碼信息和新交叉引用表標(biāo)志作為密鑰;(2)提取隱藏信息,其具體是讀取帶隱藏信息的PDF文件和密鑰;在PDF文件的數(shù)據(jù)流中查找并確定密鑰中的新交叉引用表標(biāo)志所指示的新交叉引用表;獲取新交叉引用表中的所有偏移量,并依次將后一個偏移量減去前一個偏移量,得到PDF文件所嵌入的新對象中第I個到倒數(shù)第2個新對象的長度值,組成一個十進(jìn)制的長度值序列;將獲取的長度值序列根據(jù)密鑰中的解碼信息進(jìn)行解碼,得到隱藏信息序列;將所述隱藏信息序列輸出,即得到隱藏信息。上述方案中,所述讀入二進(jìn)制隱藏信息并對其進(jìn)行編碼得到十進(jìn)制置亂序列,記錄解碼信息的具體步驟為讀取二進(jìn)制隱藏信息并對其進(jìn)行分段得到隱藏信息段,記錄隱藏信息長度、分段長度;將分段后的隱藏信息段從二進(jìn)制值轉(zhuǎn)換為十進(jìn)制值,將所有十進(jìn)制值分別加上一個設(shè)定的十進(jìn)制閾值后順序組合十進(jìn)制序列;對十進(jìn)制序列進(jìn)行置亂得到十進(jìn)制置亂序列,記錄置亂參數(shù),組合隱藏信息長度、分段長度、置亂參數(shù)和設(shè)定的十進(jìn)制閾值作為解碼信息。上述方案中,所述將獲取的長度值序列根據(jù)密鑰中的解碼信息進(jìn)行解碼,得到隱藏信息序列的具體步驟為根據(jù)密鑰中的置亂參數(shù)對獲取的長度值序列進(jìn)行反置亂,獲取反置亂序列;將反置亂序列中的每個長度值減去密鑰中的十進(jìn)制閾值再轉(zhuǎn)換為長度等于密鑰中的分段長度的二進(jìn)制片段;根據(jù)密鑰中的隱藏信息長度將二進(jìn)制片段進(jìn)行順序組合得到隱藏信息序列。上述方案中,所述將二進(jìn)制隱藏信息進(jìn)行分段時,若分割得到的最后一個隱藏信息段的長度小于分段長度,則在最后一個隱藏信息段的末尾補(bǔ)零至其長度等于分段長度;根據(jù)密鑰中的隱藏信息長度將二進(jìn)制片段進(jìn)行順序組合得到隱藏信息序列時,若所有二進(jìn)制片段的總長度大于隱藏信息長度時,則將最后一個二進(jìn)制片段末尾的零刪除,再將所有二進(jìn)制片段按順序組合獲取隱藏信息序列。上述方案中,所述對每個隱藏信息段進(jìn)行置亂是利用混沌映射對每個隱藏信息段進(jìn)行置亂,記錄映射參數(shù)作為置亂參數(shù)。與現(xiàn)有技術(shù)相比,本發(fā)明技術(shù)方案的有益效果是本發(fā)明利用PDF文件追加式更新中添加的新交叉引用表作為隱藏信息的載體,隱藏信息在文件建立之初就不可見地被寫入,對文件顯示層面沒有任何影響,可以隨著文檔內(nèi)容的傳輸而在互聯(lián)網(wǎng)上傳輸,可嵌入容量足夠大,不會因?yàn)閭鬏敾虺S玫奈臋n編輯行為而被破壞。對于攻擊者,具有隱蔽性,不易查找破壞。本發(fā)明作為PDF文檔認(rèn)證的一種方法,可以不可見地在PDF文件中嵌入文件的作者、出處、版權(quán)等相關(guān)認(rèn)證信息,對TOF文件的版權(quán)認(rèn)證、真?zhèn)伪鎰e等具有實(shí)用性。圖I是原始PDF文件的結(jié)構(gòu)示意圖2是經(jīng)過追加式更新操作后的PDF文件結(jié)構(gòu)圖3為PDF文件的交叉引用表具體實(shí)例效果圖4為本發(fā)明中進(jìn)行隱藏信息嵌入的流程圖5為本發(fā)明中提取隱藏信息的流程圖6為本發(fā)明具體實(shí)施例中原始PDF文件顯示效果圖7為本發(fā)明具體實(shí)施例中已嵌入隱藏信息的PDF文件顯示效果圖8為本發(fā)明具體實(shí)施例中已嵌入隱藏信息的PDF文件進(jìn)行各種注釋、標(biāo)記操作的效果圖9為本發(fā)明具體實(shí)施例中已嵌入隱藏信息的表單類PDF文件的顯示效果圖10為本發(fā)明具體實(shí)施例中對已嵌入隱藏信息的表單類PDF文件進(jìn)行編輯后的顯示效果圖。具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例對本發(fā)明的技術(shù)方案做進(jìn)一步的說明。如圖4和圖5所不,為本發(fā)明中一種基于PDF交叉引用表的PDF文件信息嵌入和提取方法的流程圖,所述方法的具體步驟如下(SI)如圖4所示,進(jìn)行隱藏信息嵌入,其具體是(Sll)讀取原始PDF文件流。(S12)讀入二進(jìn)制隱藏信息并對其進(jìn)行編碼得到十進(jìn)制置亂序列,記錄解碼信息;其具體步驟是(5121)讀取待嵌入的二進(jìn)制隱藏信息串T,按分段長度對二進(jìn)制隱藏信息串T進(jìn)行分段,得到η個二進(jìn)制隱藏信息段,分割得到的最后一個隱藏信息段的長度小于分段長度%時,則在最后一個隱藏信息段的末尾補(bǔ)零至其長度等于分段長度TJi,記錄隱藏信息長度、分段長度;(5122)將每個隱藏信息段從二進(jìn)制值轉(zhuǎn)換為十進(jìn)制值,并將所有經(jīng)轉(zhuǎn)換獲得的十進(jìn)制值各加上一個設(shè)定的十進(jìn)制閾值組成一個長度為η的十進(jìn)制序列;(S122)對長度為η的十進(jìn)制序列進(jìn)行置亂得到長度為η的十進(jìn)制置亂序列使用混沌映射對長度為η的十進(jìn)制序列?!M(jìn)行置亂,記錄映射參數(shù)為置亂參數(shù),組合隱藏信息長度、分段長度%、置亂參數(shù)和設(shè)定的十進(jìn)制閾值作為解碼信息。(S13)根據(jù)長度為η的十進(jìn)制置亂序列,生成n+l個內(nèi)容隨機(jī)的新對象以追加更新的方式插入原始PDF文件中,其中最后一個即第n+l個新對象的長度隨機(jī),第I個到倒數(shù)第2個即第I個到第η個新對象的長度依次等于十進(jìn)制置亂序列中的第I到第η項(xiàng)的值。(S14)n+l個新對象嵌入完畢后,寫新對象對應(yīng)的新交叉引用表和新文件尾,完成一次追加更新,并同時生成新交叉引用表標(biāo)志;至此,帶有隱藏信息的PDF文件已經(jīng)建立完畢,由于交叉引用表中的偏移量記錄的是從PDF文件開頭到交叉引用表所對應(yīng)的對象的開頭的字節(jié)數(shù),因此,隱藏信息就被嵌入到新交叉引用表的偏移量中。(S15)輸出含隱藏信息的PDF文件,以及輸出隱藏信息長度、分段長度TJ)、置亂參數(shù)、設(shè)定的十進(jìn)制閾值、新交叉引用表標(biāo)志作為密鑰。(S2)如圖5所示,在帶隱藏信息的PDF文件中進(jìn)行檢測并提取被嵌入的隱藏信息,其具體步驟是(S2)讀取帶隱藏信息的PDF文件和密鑰;(521)在PDF文件的數(shù)據(jù)流中查找并確定密鑰中的新交叉引用表標(biāo)志所指示的新交叉引用表;(522)獲取新交叉引用表中的所有偏移量,并依次將后一個偏移量減去前一個偏移量,n+l個偏移量按順序操作得到η個數(shù)值,所得到的數(shù)值就是PDF文件所嵌入的新對象中第I個到倒數(shù)第2個新對象的長度值,組成一個長度為η的十進(jìn)制的長度值序列;(523)將獲取的長度值序列根據(jù)密鑰中的解碼信息進(jìn)行解碼,得到隱藏信息序列;其具體步驟是(5231)根據(jù)密鑰中的置亂參數(shù)對獲取的長度值序列S’進(jìn)行反置亂,獲取反置亂序列;(5232)將反置亂序列中的每個長度值減去密鑰中的十進(jìn)制閾值再轉(zhuǎn)換為長度等于密鑰中的分段長度%的二進(jìn)制片段;(S234)根據(jù)密鑰中的隱藏信息長度將二進(jìn)制片段進(jìn)行順序組合得到隱藏信息序列。組合時,若所有二進(jìn)制片段的總長度大于隱藏信息長度時,則將最后一個二進(jìn)制片段末尾的零刪除,再將所有二進(jìn)制片段按順序組合獲取隱藏信息序列5。(S24)將隱藏信息序列S輸出,即得到隱藏信息。如圖6所示是原始PDF文件的顯示效果圖,圖7是利用本發(fā)明得到的已嵌入隱藏信息的PDF文件的顯示效果圖,從圖中可以看出嵌入隱藏信息后對PDF文件的顯示沒有帶來任何影響,本發(fā)明對隱藏信息具有良好的視覺隱蔽性。圖8是對已嵌入隱藏信息的PDF文件進(jìn)行各種注釋、標(biāo)記操作后的效果圖。該圖是使用AdobeAcrobat9Professional軟件對已嵌入隱藏信息的PDF文件進(jìn)行注釋、標(biāo)記的結(jié)果。通過實(shí)驗(yàn)利用本發(fā)明對被編輯后的PDF文件提取隱藏信息,提取檢測結(jié)果正確率為100%,本發(fā)明對一般編輯行為是魯棒的。圖9和圖10是對已嵌入隱藏信息的表單類PDF文件進(jìn)行的編輯行為前后圖示,其中圖9是嵌入隱藏信息但可以進(jìn)行任何編輯操作的表單類PDF文件圖示,圖10是對圖9進(jìn)行了內(nèi)容編輯保存后得到的文件圖示。通過實(shí)驗(yàn)利用本發(fā)明對被編輯后的表單類文件進(jìn)行隱藏信息的提取,提取檢測結(jié)果正確率為100%。因此,本發(fā)明對所述編輯行為同樣是魯棒的。因此,本發(fā)明對PDF文件的版權(quán)認(rèn)證、真?zhèn)伪鎰e等具有很好的實(shí)用性。權(quán)利要求1.一種基于roF交叉引用表的TOF文件信息嵌入和提取方法,其特征在于,包括如下步驟進(jìn)行隱藏信息嵌入,其具體是讀取原始PDF文件流;讀入二進(jìn)制隱藏信息并對其進(jìn)行編碼得到十進(jìn)制置亂序列,記錄解碼信息;根據(jù)十進(jìn)制置亂序列,生成數(shù)量等于十進(jìn)制置亂序列長度加I的內(nèi)容隨機(jī)的新對象以追加更新的方式插入原始PDF文件中,其中第I個到倒數(shù)第2個新對象的長度依次等于十進(jìn)制置亂序列中的各項(xiàng)數(shù)值;寫新對象對應(yīng)的新交叉引用表和新文件尾,完成一次追加更新,并同時生成新交叉引用表標(biāo)志;輸出含隱藏信息的PDF文件及輸出解碼信息和新交叉引用表標(biāo)志作為密鑰;提取隱藏信息,其具體是讀取帶隱藏信息的PDF文件和密鑰;在PDF文件的數(shù)據(jù)流中查找并確定密鑰中的新交叉引用表標(biāo)志所指示的新交叉引用表;獲取新交叉引用表中的所有偏移量,并依次將后一個偏移量減去前一個偏移量,得到PDF文件所嵌入的新對象中第I個到倒數(shù)第2個新對象的長度值,組成一個十進(jìn)制的長度值序列;將獲取的長度值序列根據(jù)密鑰中的解碼信息進(jìn)行解碼,得到隱藏信息序列;將所述隱藏信息序列輸出,即得到隱藏信息。2.根據(jù)權(quán)利要求I所述的基于PDF交叉引用表的PDF文件信息嵌入和提取方法,其特征在于,所述讀入二進(jìn)制隱藏信息并對其進(jìn)行編碼得到十進(jìn)制置亂序列,記錄解碼信息的具體步驟為讀取二進(jìn)制隱藏信息并對其進(jìn)行分段得到隱藏信息段,記錄隱藏信息長度、分段長度;將分段后的隱藏信息段從二進(jìn)制值轉(zhuǎn)換為十進(jìn)制值,將所有十進(jìn)制值分別加上一個設(shè)定的十進(jìn)制閾值后順序組合十進(jìn)制序列;對十進(jìn)制序列進(jìn)行置亂得到十進(jìn)制置亂序列,記錄置亂參數(shù),組合隱藏信息長度、分段長度、置亂參數(shù)和設(shè)定的十進(jìn)制閾值作為解碼信息。3.根據(jù)權(quán)利要求2所述的基于PDF交叉引用表的PDF文件信息嵌入和提取方法,其特征在于,所述將獲取的長度值序列根據(jù)密鑰中的解碼信息進(jìn)行解碼,得到隱藏信息序列的具體步驟為根據(jù)密鑰中的置亂參數(shù)對獲取的長度值序列進(jìn)行反置亂,獲取反置亂序列;將反置亂序列中的每個長度值減去密鑰中的十進(jìn)制閾值再轉(zhuǎn)換為長度等于密鑰中的分段長度的二進(jìn)制片段;根據(jù)密鑰中的隱藏信息長度將二進(jìn)制片段進(jìn)行順序組合得到隱藏信息序列。4.根據(jù)權(quán)利要求3所述的基于PDF交叉引用表的PDF文件信息嵌入和提取方法,其特征在于,所述將二進(jìn)制隱藏信息進(jìn)行分段時,若分割得到的最后一個隱藏信息段的長度小于分段長度,則在最后一個隱藏信息段的末尾補(bǔ)零至其長度等于分段長度;根據(jù)密鑰中的隱藏信息長度將二進(jìn)制片段進(jìn)行順序組合得到隱藏信息序列時,若所有二進(jìn)制片段的總長度大于隱藏信息長度時,則將最后一個二進(jìn)制片段末尾的零刪除,再將所有二進(jìn)制片段按順序組合獲取隱藏信息序列。5.根據(jù)權(quán)利要求2至4任一項(xiàng)所述的基于PDF交叉引用表的PDF文件信息嵌入和提取方法,其特征在于,所述對每個隱藏信息段進(jìn)行置亂是利用混沌映射對每個隱藏信息段進(jìn)行置亂,記錄映射參數(shù)作為置亂參數(shù)。全文摘要本發(fā)明屬于多媒體信號處理領(lǐng)域,具體涉及一種基于PDF交叉引用表的PDF文件信息嵌入和提取方法。本發(fā)明利用PDF文件追加式更新中添加的新交叉引用表作為隱藏信息的載體,隱藏信息在文件建立之初就不可見地被寫入,對文件顯示層面沒有任何影響,可以隨著文檔內(nèi)容的傳輸而在互聯(lián)網(wǎng)上傳輸,可嵌入容量足夠大,不會因?yàn)閭鬏敾虺S玫奈臋n編輯行為而被破壞。對于攻擊者,具有隱蔽性,不易查找破壞。本發(fā)明作為PDF文檔認(rèn)證的一種方法,可以不可見地在PDF文件中嵌入文件的作者、出處、版權(quán)等相關(guān)認(rèn)證信息,對PDF文件的版權(quán)認(rèn)證、真?zhèn)伪鎰e等具有實(shí)用性。文檔編號G06F21/24GK102622562SQ20121004574公開日2012年8月1日申請日期2012年2月27日優(yōu)先權(quán)日2012年2月27日發(fā)明者劉紅梅,李雷申請人:中山大學(xué)