一種pdf文檔恢復(fù)裝置及方法【專利摘要】本發(fā)明公開了一種PDF文檔恢復(fù)裝置及方法,該裝置包括全局密匙獲取單元,利用彩虹表獲取待解密文檔的全局密匙;PDF標(biāo)題、線性化參數(shù)字典對(duì)象產(chǎn)生單元,用來產(chǎn)生標(biāo)題、線性化參數(shù)字典對(duì)象內(nèi)容;交叉參考表預(yù)先生成單元,用來產(chǎn)生主交叉參考表和第2交叉參考表;尾部字典產(chǎn)生單元,用來產(chǎn)生與主交叉參考表和第2交叉參考表對(duì)應(yīng)的尾部字典;對(duì)象號(hào)處理單元,用來完成對(duì)解密后對(duì)象號(hào)的處理;間接引用對(duì)象處理單元,用來完成對(duì)當(dāng)前對(duì)象中所有引用對(duì)象的對(duì)象號(hào)處理;對(duì)象內(nèi)容處理單元,用來完成對(duì)對(duì)象內(nèi)容類型的判斷,并對(duì)流對(duì)象進(jìn)行解密。本發(fā)明可以忽略解密前后內(nèi)容長(zhǎng)度變化帶來的起始偏移值計(jì)算困難,便于模塊化設(shè)計(jì),快速恢復(fù)出PDF文檔?!緦@f明】一種PDF文檔恢復(fù)裝置及方法
技術(shù)領(lǐng)域:
[0001]本發(fā)明涉及]^FWortableDocumentFotmat)文件處理領(lǐng)域,尤其是指一種]文檔恢復(fù)裝置及方法?!?br>背景技術(shù):
】[〇〇〇2]眾所周知,PDF全稱ProtableDocumentFormat,可翻譯為可移植文檔格式,是一種電子文件格式。這種文件格式與操作系統(tǒng)無關(guān),也就是說,PDF文件不管是在Windows、Uinx還是蘋果公司的Mac0S操作系統(tǒng)中都是通用的,這一特性使它成為在網(wǎng)絡(luò)上進(jìn)行電子文檔發(fā)行和數(shù)字化信息傳播的理想文檔格式。越來越多的電子圖書、產(chǎn)品說明、電子郵件、網(wǎng)絡(luò)資料開始使用H)F格式文件。[0003]PDF文件結(jié)構(gòu)主要由標(biāo)題、線性化參數(shù)字典、第二交叉參考表和對(duì)應(yīng)的尾部字典、對(duì)象內(nèi)容、主交叉參考表和對(duì)應(yīng)的尾部字典組成。[0004]PDF規(guī)范從1993年到現(xiàn)在,已經(jīng)有過7個(gè)版本,從最初的TOF1.0到現(xiàn)在的roFl.6,每次的版本升級(jí)都會(huì)加入一些新的特性,但是PDF文件格式的主要特性沒有改變。1995年,PDF1.1版本加入了40比特文檔加密;2001年,PDF1.4版本加入了128比特文檔加密?,F(xiàn)在針對(duì)40比特的加密方法,可以使用彩虹表進(jìn)行破解,獲取全局密匙后,進(jìn)而恢復(fù)出PDF文檔。PDF文檔加密后增加了一個(gè)加密字典對(duì)象,用來存貯解密需要的信息?;謴?fù)TOF文檔,需要重新計(jì)算各個(gè)對(duì)象的起始偏移值,并寫入到交叉參考表。由于解密后,去掉了加密字典對(duì)象,導(dǎo)致部分對(duì)象的內(nèi)容長(zhǎng)度發(fā)生變化,例如對(duì)象A解密前的對(duì)象號(hào)為100,解密后變?yōu)?9,則對(duì)象號(hào)長(zhǎng)度由3變?yōu)?,對(duì)象A的總長(zhǎng)度也對(duì)應(yīng)的減1,進(jìn)而導(dǎo)致對(duì)象A后面的所有對(duì)象的起始偏移值減1;另外對(duì)象A作為間接參考對(duì)象,也可能被對(duì)象B引用,因此也會(huì)產(chǎn)生上述的問題。由于不知道對(duì)象A、B在PDF文件結(jié)構(gòu)中的位置,導(dǎo)致不能預(yù)先計(jì)算完每個(gè)對(duì)象的起始偏移值,而是實(shí)時(shí)計(jì)算每個(gè)對(duì)象的起始偏移值,從而給PDF文檔恢復(fù)帶來困難,不能快速恢復(fù)出PDF文檔。另外假設(shè)解密前后各個(gè)對(duì)象長(zhǎng)度不變,雖然可以快速計(jì)算出解密后各個(gè)對(duì)象的起始偏移值,但是還需要對(duì)長(zhǎng)度發(fā)生變化的對(duì)象進(jìn)行處理,如果處理不正確,也不能正確恢復(fù)出TOF文檔。【
發(fā)明內(nèi)容】[0005]本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種TOF文檔恢復(fù)裝置及方法,可以忽略解密后對(duì)象長(zhǎng)度變化導(dǎo)致的起始偏移值計(jì)算困難,根據(jù)解密前各個(gè)對(duì)象的長(zhǎng)度,預(yù)先計(jì)算出解密后各個(gè)對(duì)象的起始偏移值,然后寫入交叉參考表;另外對(duì)于解密前后內(nèi)容長(zhǎng)度發(fā)生變化的對(duì)象,給出一種合理的處理方法,以便于能夠正確恢復(fù)出TOF文檔。[0006]為實(shí)現(xiàn)上述目的,本發(fā)明所提供的技術(shù)方案,如下:[0007]一種PDF文檔恢復(fù)裝置,包括:[0008]全局密匙獲取單元,由加密字典對(duì)象內(nèi)容提取單元、數(shù)據(jù)索引單元、彩虹表數(shù)據(jù)存儲(chǔ)單元、密匙輸出單元組成,該全局密匙獲取單元利用彩虹表獲取待解密文檔的全局密匙;[0009]PDF標(biāo)題、線性化參數(shù)字典對(duì)象產(chǎn)生單元,由標(biāo)題產(chǎn)生單元、線性化參數(shù)字典對(duì)象產(chǎn)生單元、內(nèi)容輸出單元組成,該P(yáng)DF標(biāo)題、線性化參數(shù)字典對(duì)象產(chǎn)生單元用來產(chǎn)生標(biāo)題、線性化參數(shù)字典對(duì)象內(nèi)容;[0010]交叉參考表預(yù)先生成單元,由主交叉參考表生成單元、第2交叉參考表生成單元、內(nèi)容輸出單元組成,該交叉參考表預(yù)先生成單元用來產(chǎn)生主交叉參考表和第2交叉參考表;[0011]尾部字典產(chǎn)生單元,用來產(chǎn)生與主交叉參考表和第2交叉參考表對(duì)應(yīng)的尾部字典;[〇〇12]對(duì)象號(hào)處理單元,由第1判斷單元、第2判斷單元、處理單元組成,用來完成對(duì)解密后對(duì)象號(hào)的處理;[0013]間接引用對(duì)象處理單元,由搜索單元和對(duì)象號(hào)處理單元組成,用來完成對(duì)當(dāng)前對(duì)象中所有引用對(duì)象的對(duì)象號(hào)處理;[0014]對(duì)象內(nèi)容處理單元,由第3判斷單元、流內(nèi)容解密單元組成,用來完成對(duì)對(duì)象內(nèi)容類型的判斷,并對(duì)流對(duì)象進(jìn)行解密。[0015]一種利用上述PDF文檔恢復(fù)裝置實(shí)現(xiàn)的PDF文檔恢復(fù)方法,如下:[0016]首先假設(shè)各個(gè)對(duì)象解密前后內(nèi)容長(zhǎng)度不發(fā)生變化,則根據(jù)解密前各個(gè)對(duì)象的起始偏移值,獲得各個(gè)對(duì)象的內(nèi)容長(zhǎng)度,預(yù)先計(jì)算出解密后各個(gè)對(duì)象的起始偏移值,并形成交叉參考表,然后把交叉參考表寫入PDF文件;根據(jù)獲取的加密字典對(duì)象號(hào),把待處理的各個(gè)對(duì)象的對(duì)象號(hào)同加密字典對(duì)象號(hào)進(jìn)行比較,如果小于加密字典對(duì)象號(hào),則對(duì)象號(hào)不變;如果大于加密字典對(duì)象號(hào),則對(duì)象號(hào)減1,另外判斷對(duì)象號(hào)減1后,對(duì)象號(hào)長(zhǎng)度是否變化,如果沒有發(fā)生變化,則不作處理;如果對(duì)象號(hào)長(zhǎng)度發(fā)生變化,則在原對(duì)象號(hào)的最高位填入一個(gè)預(yù)設(shè)值,修改后的對(duì)象號(hào)填入低位;其具體包括以下步驟:[0017]1)利用全局密匙密匙獲取單元,首先獲取加密TOF文檔中的加密字典對(duì)象內(nèi)容,然后根據(jù)已經(jīng)保存的彩虹表和索引值,獲得全局密匙;[0018]2)利用PDF標(biāo)題、線性化參數(shù)字典對(duì)象產(chǎn)生單元,產(chǎn)生標(biāo)題和線性化參數(shù)字典,并把兩部分內(nèi)容寫入到打開的TOF文件,同時(shí)保存已經(jīng)寫入數(shù)據(jù)的長(zhǎng)度L;[0019]3)把數(shù)據(jù)長(zhǎng)度L和加密前各個(gè)對(duì)象的起始偏移值,送入到交叉參考表預(yù)產(chǎn)生單元,生成第2交叉參考表和主交叉參考表,并把第2交叉參考表寫入已經(jīng)打開的TOF文件;[0020]4)利用尾部字典產(chǎn)生單元,產(chǎn)生與第2交叉參考表對(duì)應(yīng)的尾部字典,并把尾部字典內(nèi)容寫入已經(jīng)打開的TOF文件;[0〇21]5)從加密文檔中讀出第n個(gè)對(duì)象內(nèi)容,獲得對(duì)象n的對(duì)象號(hào)碼objectNumbern,然后把對(duì)象號(hào)碼〇bjectNumbern送入到對(duì)象號(hào)處理單元,第1判斷單元把objectNumbern同加密字典對(duì)象號(hào)碼進(jìn)行比較,如果〇bjectNumbern小于,則不作任何處理;反之則objectNumbern’n=objectNumbern_l;把新對(duì)象號(hào)碼objectNumbern’n送入到第2判斷單元,如果滿足mod(loglO(objectNumbern’n+l),1)等于0,mod表示取模運(yùn)算,則需要把對(duì)象號(hào)objectNumbern’n送入到處理單元進(jìn)行處理,處理方法是:在對(duì)象號(hào)碼objectNumbern的最高位補(bǔ)0,剩余低位存放objectNumbern’n;[〇〇22]6)把第(5)步處理后的對(duì)象內(nèi)容送入到間接引用對(duì)象處理單元,搜索單元完成對(duì)象n中所有間接引用對(duì)象的統(tǒng)計(jì),然后依次送入到對(duì)象號(hào)處理單元,完成對(duì)象號(hào)處理;[〇〇23]7)把第(6)步處理后的對(duì)象n送入到對(duì)象內(nèi)容處理單元,第3判斷單元進(jìn)行對(duì)象類型判斷,如果對(duì)象n不是流對(duì)象,則直接寫入已經(jīng)打開的TOF文件;反之送入到流內(nèi)容解密單元,根據(jù)獲取的全局密匙、對(duì)象n的原對(duì)象號(hào)碼objectNumbern、產(chǎn)生號(hào)碼,獲得流對(duì)象加密密匙,然后對(duì)流內(nèi)容進(jìn)行解密,并把處理后的對(duì)象n寫入到已經(jīng)打開的TOF文件;[0024]8)根據(jù)獲得對(duì)象個(gè)數(shù)N,依次對(duì)每個(gè)對(duì)象進(jìn)行(5)-(7)步的處理;[〇〇25]9)把第(3)步預(yù)先生成的主交叉參考表寫入到已經(jīng)打開的PDF文件中;[0026]10)利用尾部字典產(chǎn)生單元,產(chǎn)生與主交叉參考表對(duì)應(yīng)的尾部字典,并把尾部字典內(nèi)容寫入已經(jīng)打開的TOF文件。[0027]本發(fā)明與現(xiàn)有技術(shù)相比,具有如下優(yōu)點(diǎn)與有益效果:[0028]1、本發(fā)明不用考慮解密前后對(duì)象內(nèi)容長(zhǎng)度變化帶來的影響,根據(jù)解密前各個(gè)對(duì)象的起始偏移值,獲得各個(gè)對(duì)象的內(nèi)容長(zhǎng)度,然后根據(jù)內(nèi)容長(zhǎng)度預(yù)先計(jì)算出解密后各個(gè)對(duì)象的起始偏移值,從而可以忽略解密前后內(nèi)容長(zhǎng)度變化帶來的起始偏移值計(jì)算困難,便于模塊化設(shè)計(jì),快速恢復(fù)出TOF文檔。[0029]2、本發(fā)明對(duì)解密前后對(duì)象內(nèi)容長(zhǎng)度發(fā)生變化的對(duì)象,只需對(duì)對(duì)象號(hào)進(jìn)行處理,然后把修改后的對(duì)象內(nèi)容寫入roF文檔即可;另外本發(fā)明對(duì)對(duì)象中的間接索引對(duì)象也給出了合理的處理方法。本發(fā)明給出的對(duì)象處理方法只用關(guān)注于對(duì)象號(hào)碼的處理,而不用關(guān)心一個(gè)對(duì)象中的剩余內(nèi)容,易于實(shí)現(xiàn)?!靖綀D說明】[0030]圖1為全局密匙獲取單元圖。[0031]圖2為PDF標(biāo)題、線性化參數(shù)字典對(duì)象產(chǎn)生單元圖。[0032]圖3為交叉參考表預(yù)先生成單元圖。[〇〇33]圖4為對(duì)象號(hào)處理單元圖。[〇〇34]圖5為間接引用對(duì)象處理單元圖。[〇〇35]圖6為對(duì)象內(nèi)容處理單元圖?!揪唧w實(shí)施方式】[〇〇36]下面結(jié)合具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明。[〇〇37]本發(fā)明所述的PDF文檔恢復(fù)裝置,包括:[0038]全局密匙獲取單元,由加密字典對(duì)象內(nèi)容提取單元、數(shù)據(jù)索引單元、彩虹表數(shù)據(jù)存儲(chǔ)單元、密匙輸出單元組成(如圖1所示),該全局密匙獲取單元利用彩虹表獲取待解密文檔的全局密匙;[0039]PDF標(biāo)題、線性化參數(shù)字典對(duì)象產(chǎn)生單元,由標(biāo)題產(chǎn)生單元、線性化參數(shù)字典對(duì)象產(chǎn)生單元、內(nèi)容輸出單元組成(如圖2所示),該TOF標(biāo)題、線性化參數(shù)字典對(duì)象產(chǎn)生單元用來產(chǎn)生標(biāo)題、線性化參數(shù)字典對(duì)象內(nèi)容;[0040]交叉參考表預(yù)先生成單元,由主交叉參考表生成單元、第2交叉參考表生成單元、內(nèi)容輸出單元組成(如圖3所示),該交叉參考表預(yù)先生成單元用來產(chǎn)生主交叉參考表和第2交叉參考表;[0041]尾部字典產(chǎn)生單元,用來產(chǎn)生與主交叉參考表和第2交叉參考表對(duì)應(yīng)的尾部字典;[〇〇42]對(duì)象號(hào)處理單元,由第1判斷單元、第2判斷單元、處理單元組成(如圖4所示),用來完成對(duì)解密后對(duì)象號(hào)的處理;[0043]間接引用對(duì)象處理單元,由搜索單元和對(duì)象號(hào)處理單元組成(如圖5所示),用來完成對(duì)當(dāng)前對(duì)象中所有引用對(duì)象的對(duì)象號(hào)處理;[0044]對(duì)象內(nèi)容處理單元,由第3判斷單元、流內(nèi)容解密單元組成(如圖6所示),用來完成對(duì)對(duì)象內(nèi)容類型的判斷,并對(duì)流對(duì)象進(jìn)行解密。[〇〇45]下面為利用上述PDF文檔恢復(fù)裝置實(shí)現(xiàn)的PDF文檔恢復(fù)方法,具體情況如下:[0046]首先假設(shè)各個(gè)對(duì)象解密前后內(nèi)容長(zhǎng)度不發(fā)生變化,則可以根據(jù)解密前各個(gè)對(duì)象的起始偏移值,獲得各個(gè)對(duì)象的內(nèi)容長(zhǎng)度,預(yù)先計(jì)算出解密后各個(gè)對(duì)象的起始偏移值,并形成交叉參考表,然后把交叉參考表寫入PDF文件;根據(jù)獲取的加密字典對(duì)象號(hào),把待處理的各個(gè)對(duì)象的對(duì)象號(hào)同加密字典對(duì)象號(hào)進(jìn)行比較,如果小于加密字典對(duì)象號(hào),則對(duì)象號(hào)不變;如果大于加密字典對(duì)象號(hào),則對(duì)象號(hào)減1,另外判斷對(duì)象號(hào)減1后,對(duì)象號(hào)長(zhǎng)度是否變化,如果沒有發(fā)生變化,則不作處理;如果對(duì)象號(hào)長(zhǎng)度發(fā)生變化,則在原對(duì)象號(hào)的最高位填入一個(gè)預(yù)設(shè)值,修改后的對(duì)象號(hào)填入低位。[0047]采用40比特密匙加密的TOF文檔,可以利用彩虹表獲取全局密匙,然后恢復(fù)出PDF文檔,其具體包括以下步驟:[0048]1)利用全局密匙密匙獲取單元,首先獲取加密TOF文檔中的加密字典對(duì)象內(nèi)容,然后根據(jù)已經(jīng)保存的彩虹表和索引值,獲得全局密匙;[0049]2)利用PDF標(biāo)題、線性化參數(shù)字典對(duì)象產(chǎn)生單元,產(chǎn)生標(biāo)題和線性化參數(shù)字典,并把兩部分內(nèi)容寫入到打開的TOF文件,同時(shí)保存已經(jīng)寫入數(shù)據(jù)的長(zhǎng)度L;[0050]3)把數(shù)據(jù)長(zhǎng)度L和加密前各個(gè)對(duì)象的起始偏移值,送入到交叉參考表預(yù)產(chǎn)生單元,生成第2交叉參考表和主交叉參考表,并把第2交叉參考表寫入已經(jīng)打開的TOF文件;[0051]4)利用尾部字典產(chǎn)生單元,產(chǎn)生與第2交叉參考表對(duì)應(yīng)的尾部字典,并把尾部字典內(nèi)容寫入已經(jīng)打開的TOF文件;[0〇52]5)從加密文檔中讀出第n個(gè)對(duì)象內(nèi)容,獲得對(duì)象n的對(duì)象號(hào)碼objectNumbern,然后把對(duì)象號(hào)碼〇bjectNumbern送入到對(duì)象號(hào)處理單元,第1判斷單元把objectNumbern同加密字典對(duì)象號(hào)碼進(jìn)行比較,如果〇bjectNumbern小于,則不作任何處理;反之則objectNumbern’n=objectNumbern_l;把新對(duì)象號(hào)碼objectNumbern’n送入到第2判斷單元,如果滿足mod(loglO(objectNumbern’n+l),1)等于0,mod表示取模運(yùn)算,則需要把對(duì)象號(hào)objectNumbern’n送入到處理單元進(jìn)行處理,處理方法是:在對(duì)象號(hào)碼objectNumbern的最高位補(bǔ)0,剩余低位存放objectNumbern’n;[〇〇53]6)把第(5)步處理后的對(duì)象內(nèi)容送入到間接引用對(duì)象處理單元,搜索單元完成對(duì)象n中所有間接引用對(duì)象的統(tǒng)計(jì),然后依次送入到對(duì)象號(hào)處理單元,完成對(duì)象號(hào)處理;[〇〇54]7)把第(6)步處理后的對(duì)象n送入到對(duì)象內(nèi)容處理單元,第3判斷單元進(jìn)行對(duì)象類型判斷,如果對(duì)象n不是流對(duì)象,則直接寫入已經(jīng)打開的TOF文件;反之送入到流內(nèi)容解密單元,根據(jù)獲取的全局密匙、對(duì)象n的原對(duì)象號(hào)碼objectNumbern、產(chǎn)生號(hào)碼,獲得流對(duì)象加密密匙,然后對(duì)流內(nèi)容進(jìn)行解密,并把處理后的對(duì)象n寫入到已經(jīng)打開的TOF文件;[0055]8)根據(jù)獲得對(duì)象個(gè)數(shù)N,依次對(duì)每個(gè)對(duì)象進(jìn)行(5)-(7)步的處理;[〇〇56]9)把第(3)步預(yù)先生成的主交叉參考表寫入到已經(jīng)打開的PDF文件中;[〇〇57]10)利用尾部字典產(chǎn)生單元,產(chǎn)生與主交叉參考表對(duì)應(yīng)的尾部字典,并把尾部字典內(nèi)容寫入已經(jīng)打開的roF文件。[0058]以上所述實(shí)施例只為本發(fā)明之較佳實(shí)施例,并非以此限制本發(fā)明的實(shí)施范圍,故凡依本發(fā)明之形狀、原理所作的變化,均應(yīng)涵蓋在本發(fā)明的保護(hù)范圍內(nèi)?!局鳈?quán)項(xiàng)】1.一種PDF文檔恢復(fù)裝置,其特征在于,包括:全局密匙獲取單元,由加密字典對(duì)象內(nèi)容提取單元、數(shù)據(jù)索引單元、彩虹表數(shù)據(jù)存儲(chǔ)單元、密匙輸出單元組成,該全局密匙獲取單元利用彩虹表獲取待解密文檔的全局密匙;PDF標(biāo)題、線性化參數(shù)字典對(duì)象產(chǎn)生單元,由標(biāo)題產(chǎn)生單元、線性化參數(shù)字典對(duì)象產(chǎn)生單元、內(nèi)容輸出單元組成,該TOF標(biāo)題、線性化參數(shù)字典對(duì)象產(chǎn)生單元用來產(chǎn)生標(biāo)題、線性化參數(shù)字典對(duì)象內(nèi)容;交叉參考表預(yù)先生成單元,由主交叉參考表生成單元、第2交叉參考表生成單元、內(nèi)容輸出單元組成,該交叉參考表預(yù)先生成單元用來產(chǎn)生主交叉參考表和第2交叉參考表;尾部字典產(chǎn)生單元,用來產(chǎn)生與主交叉參考表和第2交叉參考表對(duì)應(yīng)的尾部字典;對(duì)象號(hào)處理單元,由第1判斷單元、第2判斷單元、處理單元組成,用來完成對(duì)解密后對(duì)象號(hào)的處理;間接引用對(duì)象處理單元,由搜索單元和對(duì)象號(hào)處理單元組成,用來完成對(duì)當(dāng)前對(duì)象中所有引用對(duì)象的對(duì)象號(hào)處理;對(duì)象內(nèi)容處理單元,由第3判斷單元、流內(nèi)容解密單元組成,用來完成對(duì)對(duì)象內(nèi)容類型的判斷,并對(duì)流對(duì)象進(jìn)行解密。2.—種利用權(quán)利要求1所述PDF文檔恢復(fù)裝置實(shí)現(xiàn)的TOF文檔恢復(fù)方法,其特征在于:首先假設(shè)各個(gè)對(duì)象解密前后內(nèi)容長(zhǎng)度不發(fā)生變化,則根據(jù)解密前各個(gè)對(duì)象的起始偏移值,獲得各個(gè)對(duì)象的內(nèi)容長(zhǎng)度,預(yù)先計(jì)算出解密后各個(gè)對(duì)象的起始偏移值,并形成交叉參考表,然后把交叉參考表寫入PDF文件;根據(jù)獲取的加密字典對(duì)象號(hào),把待處理的各個(gè)對(duì)象的對(duì)象號(hào)同加密字典對(duì)象號(hào)進(jìn)行比較,如果小于加密字典對(duì)象號(hào),則對(duì)象號(hào)不變;如果大于加密字典對(duì)象號(hào),則對(duì)象號(hào)減1,另外判斷對(duì)象號(hào)減1后,對(duì)象號(hào)長(zhǎng)度是否變化,如果沒有發(fā)生變化,則不作處理;如果對(duì)象號(hào)長(zhǎng)度發(fā)生變化,則在原對(duì)象號(hào)的最高位填入一個(gè)預(yù)設(shè)值,修改后的對(duì)象號(hào)填入低位;其具體包括以下步驟:1)利用全局密匙密匙獲取單元,首先獲取加密TOF文檔中的加密字典對(duì)象內(nèi)容,然后根據(jù)已經(jīng)保存的彩虹表和索引值,獲得全局密匙;2)利用PDF標(biāo)題、線性化參數(shù)字典對(duì)象產(chǎn)生單元,產(chǎn)生標(biāo)題和線性化參數(shù)字典,并把兩部分內(nèi)容寫入到打開的TOF文件,同時(shí)保存已經(jīng)寫入數(shù)據(jù)的長(zhǎng)度L;3)把數(shù)據(jù)長(zhǎng)度L和加密前各個(gè)對(duì)象的起始偏移值,送入到交叉參考表預(yù)產(chǎn)生單元,生成第2交叉參考表和主交叉參考表,并把第2交叉參考表寫入已經(jīng)打開的TOF文件;4)利用尾部字典產(chǎn)生單元,產(chǎn)生與第2交叉參考表對(duì)應(yīng)的尾部字典,并把尾部字典內(nèi)容寫入已經(jīng)打開的TOF文件;5)從加密文檔中讀出第n個(gè)對(duì)象內(nèi)容,獲得對(duì)象n的對(duì)象號(hào)碼objectNumbern,然后把對(duì)象號(hào)碼objectNumbern送入到對(duì)象號(hào)處理單元,第1判斷單元把objectNumbern同加密字典對(duì)象號(hào)碼進(jìn)行比較,如果〇bjectNumbern小于,則不作任何處理;反之則objectNumbern’n=objectNumbern-l;把新對(duì)象號(hào)碼objectNumbern’n送入到第2判斷單元,如果滿足mod(loglO(objectNumbern’n+l),1)等于0,mod表示取模運(yùn)算,則需要把對(duì)象號(hào)objectNumbern’n送入到處理單元進(jìn)行處理,處理方法是:在對(duì)象號(hào)碼objectNumbern的最高位補(bǔ)0,剩余低位存放objectNumbern’n;6)把第(5)步處理后的對(duì)象內(nèi)容送入到間接引用對(duì)象處理單元,搜索單元完成對(duì)象n中所有間接引用對(duì)象的統(tǒng)計(jì),然后依次送入到對(duì)象號(hào)處理單元,完成對(duì)象號(hào)處理;7)把第(6)步處理后的對(duì)象n送入到對(duì)象內(nèi)容處理單元,第3判斷單元進(jìn)行對(duì)象類型判斷,如果對(duì)象n不是流對(duì)象,則直接寫入已經(jīng)打開的PDF文件;反之送入到流內(nèi)容解密單元,根據(jù)獲取的全局密匙、對(duì)象n的原對(duì)象號(hào)碼objectNumbern、產(chǎn)生號(hào)碼,獲得流對(duì)象加密密匙,然后對(duì)流內(nèi)容進(jìn)行解密,并把處理后的對(duì)象n寫入到已經(jīng)打開的TOF文件;8)根據(jù)獲得對(duì)象個(gè)數(shù)N,依次對(duì)每個(gè)對(duì)象進(jìn)行(5)-(7)步的處理;9)把第(3)步預(yù)先生成的主交叉參考表寫入到已經(jīng)打開的PDF文件中;10)利用尾部字典產(chǎn)生單元,產(chǎn)生與主交叉參考表對(duì)應(yīng)的尾部字典,并把尾部字典內(nèi)容寫入已經(jīng)打開的TOF文件?!疚臋n編號(hào)】G06F21/60GK105956477SQ201610246757【公開日】2016年9月21日【申請(qǐng)日】2016年4月20日【發(fā)明人】黃曉光【申請(qǐng)人】廣州慧睿思通信息科技有限公司