2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院</p><p>  信科專業(yè)綜合實(shí)踐設(shè)計(jì)報(bào)告</p><p>  專 業(yè): 電子信息科學(xué)與技術(shù) </p><p>  班 級(jí): 信科07-4班 </p><p>  設(shè)計(jì)題目: VC實(shí)現(xiàn)數(shù)字水印的加入與提取

2、 </p><p>  成 員: </p><p>  指導(dǎo)教師: </p><p>  2010年 10月 14日</p><p>  課程設(shè)計(jì)指導(dǎo)教師評(píng)閱書</p><p&g

3、t;<b>  指導(dǎo)教師評(píng)語:</b></p><p>  成 績(jī): 指導(dǎo)教師簽字:</p><p>  年 月 日</p><p><b>  【摘要】:</b></p><p>  當(dāng)前,數(shù)字圖像技術(shù)的主要研究熱點(diǎn)之一是數(shù)字水印的

4、應(yīng)用 。本文介紹了LSB算法的思想 ,利用 VC技術(shù)對(duì)數(shù)字圖像水印LSB算法進(jìn)行實(shí)現(xiàn),并總結(jié)LSB算法的利弊 ,提 出了可行的改進(jìn)措施。</p><p>  關(guān)鍵詞:VC;圖像處理;數(shù)字水?。籐SB算法</p><p><b>  一、前言9</b></p><p><b>  1.1背景9</b></p>

5、<p>  1.2數(shù)字水印的現(xiàn)狀10</p><p>  2.3數(shù)字水印的應(yīng)用12</p><p>  二、數(shù)字水印技術(shù)14</p><p>  2.1數(shù)字水印的起源、概念和基本原理14</p><p>  2.2數(shù)字水印的嵌入和提取14</p><p>  三、數(shù)字水印的典型算法15<

6、/p><p>  3.1最低有效位算法(LSB)16</p><p>  3.2 Patchwork 算法16</p><p>  3.3紋理塊映射編碼16</p><p><b>  3.4 其他16</b></p><p>  四、LSB算法的VC實(shí)現(xiàn)16</p><

7、p>  五 、實(shí)驗(yàn)體會(huì)20</p><p><b>  參考書目:21</b></p><p>  附錄1:算法設(shè)計(jì)說明書21</p><p>  附錄二:主要原程序23</p><p><b>  一、前言 </b></p><p><b>  1

8、.1背景</b></p><p>  隨著網(wǎng)絡(luò)通信的普及,許多傳統(tǒng)媒體內(nèi)容都向數(shù)字化轉(zhuǎn)變,并且在電子商務(wù)中即將占據(jù)巨大的市場(chǎng)份額,如mP3的網(wǎng)上銷售,數(shù)字影院的大力推行,網(wǎng)上圖片、電子書籍銷售等等。在無線領(lǐng)域,隨著移動(dòng)網(wǎng)絡(luò)由第二代到第三代的演變,移動(dòng)用戶將能方便快速的訪問因特網(wǎng)上數(shù)字媒體內(nèi)容,基于有線或無線網(wǎng)絡(luò)的數(shù)字媒體內(nèi)容的影院即將是信息時(shí)代新的趨勢(shì)。但是,數(shù)字媒體內(nèi)容的安全問題恰恰制約著信息化進(jìn)程

9、,雖然成熟的密碼學(xué)可以解決安全傳遞和訪問控制,但是一旦解密后,數(shù)字媒體內(nèi)容便可以隨意的被拷貝、傳播,它給媒體內(nèi)容制造商造成了巨大的損失;同時(shí),密文信息的傳遞也容易引起攻擊者的注意。因此如何安全的傳送信息就成了其中的關(guān)鍵,數(shù)字水印技術(shù)就成為開啟這一難點(diǎn)的鑰匙。</p><p>  數(shù)字水印(digital water marking)是實(shí)現(xiàn)版權(quán)保護(hù)的有效辦法,已成為多媒體信息安全研究領(lǐng)域的一個(gè)熱點(diǎn),也是信息隱藏技術(shù)

10、研究領(lǐng)域的重要分支。它通過在原始數(shù)據(jù)中嵌入秘密信息—水印(water mark)來證實(shí)該數(shù)據(jù)的所有權(quán)。被嵌入的水印可以是一段文字、標(biāo)識(shí)、序列號(hào)等。水印通常是不可見的或不可察的,它與原始數(shù)據(jù)(如圖像、音頻、視頻數(shù)據(jù)等)緊密結(jié)合并隱藏其中,成為源數(shù)據(jù)不可分離的一部分,并可以經(jīng)歷一些不破壞源數(shù)據(jù)使用價(jià)值或商用價(jià)值的操作而存活下來。</p><p>  數(shù)字水印技術(shù)除具備信息隱藏技術(shù)的一般特點(diǎn)外,還有著其固有的特點(diǎn)和研究

11、方法。例如,從信息安全的保密角度而言,隱藏的信息如果被破壞掉,系統(tǒng)可以視為安全的,因?yàn)槊孛苄畔⒉⑽葱孤?但是,在數(shù)字水印系統(tǒng)中,隱藏信息的丟失意味著版權(quán)信息的丟失,從而失去了版權(quán)保護(hù)的功能,這一系統(tǒng)就是失敗的。因此數(shù)字水印技術(shù)必須具有以下特性:安全性(嵌入在宿主數(shù)據(jù)中的水印是不可刪除的,且能夠提供完全的版權(quán)證據(jù))、魯棒性(水印對(duì)有意或無意的圖像操作與失真具有一定的抵抗力)以及不可覺察性(水印對(duì)人的感覺器官應(yīng)是不可覺察的,或者說是透明的)

12、。水印算法識(shí)別被嵌入到保護(hù)對(duì)象中的所有者的有關(guān)信息(如注冊(cè)的用戶號(hào)碼、產(chǎn)品標(biāo)志或有意義的文字等),并能在需要的時(shí)候?qū)⑵涮崛〕鰜?。水印可以用來判別對(duì)象是否受到保護(hù),并能夠監(jiān)視被保護(hù)數(shù)據(jù)的傳播、真?zhèn)舞b別以及非法拷貝控制等,這實(shí)際上是發(fā)展數(shù)字水印的基本動(dòng)力。盡管版權(quán)保護(hù)是發(fā)展數(shù)字水印最重要的源動(dòng)力,事實(shí)上人們還發(fā)現(xiàn)數(shù)字水印在真?zhèn)舞b別、隱藏通信、篡改提示、使用控制、標(biāo)題與注釋等領(lǐng)域都有重要應(yīng)用。數(shù)字水印術(shù)與古老的信息隱藏和數(shù)據(jù)加密技術(shù)關(guān)系非常密

13、切,這些技術(shù)的發(fā)展以及融合為今后信息技術(shù)的發(fā)展提供必</p><p>  1.2數(shù)字水印的現(xiàn)狀</p><p>  自從第一篇在主要會(huì)議上發(fā)表的關(guān)于數(shù)字水印的文章,即VanSchyndel在xexP’94上發(fā)表的題為“Adigitalwatermark”的文章以來,對(duì)數(shù)字水印的研究興趣在不斷的增長。這既可以從學(xué)術(shù)界也可以從工業(yè)界看出來。學(xué)術(shù)界的熱情反映在水印方面的文章還在大幅度增長,且有關(guān)

14、數(shù)字水印和數(shù)據(jù)隱藏的會(huì)議也增長很快,幾個(gè)有影響的國際會(huì)議(如IEEE ICIP、IEEE ICASSP、ACM Multimedia等)以及一些國際權(quán)威雜志(如Proceedings of IEEE Signal processing,IEEE Journal of Selected Areas on Communication,Communications of ACM等)相繼出版了數(shù)字水印的專輯。并且,國際上還成立了一些專門的研究機(jī)

15、構(gòu),如拷貝保護(hù)技術(shù)工作組(CPTWG,Copy protection Technique Working Group)從1995年開始致力于基于DVD的視頻版權(quán)保護(hù)研究,安全數(shù)字音樂創(chuàng)始(SDMI,Secure Digital Music Initiative)從1999年開始研究音</p><p>  一項(xiàng)由德國人開發(fā)出來的數(shù)字水印技術(shù)已經(jīng)在比利時(shí)開始商業(yè)應(yīng)用,這項(xiàng)技術(shù)據(jù)稱可以防止在線音樂的非法復(fù)制。首個(gè)應(yīng)用該

16、技術(shù)的是比利時(shí)歌手SoulBob的新專輯,該專輯將很快可以在網(wǎng)絡(luò)上下載。不過購買者的姓名以及住址等個(gè)人信息將加入到數(shù)字水印中。這樣非法復(fù)制的音樂將可以很快找到源頭。目前國際上的劍橋大學(xué)、IBM研究中心、NEC美國研究所、麻省理工學(xué)院等都進(jìn)行了廣泛深入的研究;國際標(biāo)準(zhǔn)組織也對(duì)數(shù)字水印技術(shù)深感興趣。如歐洲的TALISMAN的目標(biāo)是建立一個(gè)在歐洲范圍內(nèi)對(duì)大規(guī)模的商業(yè)侵權(quán)和盜版行為提供一個(gè)版權(quán)保護(hù)機(jī)制。TALIMAN希望能夠?yàn)橐曨l產(chǎn)品以增加標(biāo)識(shí)

17、和水印的</p><p>  方法提高保護(hù)手段。OCEAUS則是TALIMAN和OKAPI的后續(xù)項(xiàng)目,其主要目的是將有條件的訪問機(jī)制和版權(quán)保護(hù)機(jī)制整合起來。即將發(fā)布的數(shù)字視頻壓縮標(biāo)準(zhǔn)MPEG-4,提供一個(gè)框架允許結(jié)合簡(jiǎn)單的加密方法和水印嵌入方法。DVD工業(yè)標(biāo)準(zhǔn)將利用水印技術(shù)提供復(fù)制控制和復(fù)制保護(hù)機(jī)制,如“復(fù)制一次”或“不允許復(fù)制”等等。</p><p>  我國學(xué)術(shù)界對(duì)數(shù)字水印技術(shù)的研究也

18、方興未艾,已經(jīng)有相當(dāng)一批有實(shí)力的科研機(jī)構(gòu)投入到這一領(lǐng)域的研究中來,有的已經(jīng)取得了重要研究成果。為推動(dòng)我國在數(shù)字水印這一國際前沿計(jì)算機(jī)技術(shù)的發(fā)展,促進(jìn)我國研究人員在此領(lǐng)域的交流與合作,國家863計(jì)劃智能計(jì)算機(jī)專家,會(huì)同中科院自動(dòng)化所模式識(shí)別國家重點(diǎn)實(shí)驗(yàn)室和北京郵電大學(xué)信息安全中心,于2000年年初召開了國內(nèi)首次數(shù)字水印學(xué)術(shù)研討會(huì)。來自全國20多家重點(diǎn)高校和科研單位計(jì)算機(jī)、自動(dòng)化、電子學(xué)</p><p>  科及數(shù)學(xué)

19、學(xué)科的80多名科研一線專家與青年工作者,參加了這次研討會(huì)。眾多的學(xué)術(shù)成果表明,我國科研工作者在數(shù)字水印方面的研究處于國際先進(jìn)水平。同時(shí),他們表示要盡快把研究成果轉(zhuǎn)化為生產(chǎn)力,解決與每個(gè)人切身利益密切相關(guān)的數(shù)字產(chǎn)品保護(hù)問題。</p><p>  但是,我國在該領(lǐng)域的研究尚不普及,隨著數(shù)字化產(chǎn)品在中國的廣泛開展,特別是今后幾年因特網(wǎng)用戶將成倍增長,電子商務(wù)會(huì)加速發(fā)展,在網(wǎng)絡(luò)上直接銷售數(shù)字化產(chǎn)品將給廠家?guī)順O大的商機(jī),

20、也是中國產(chǎn)品走向世界的極佳途徑,其時(shí)如何有效保護(hù)產(chǎn)品的產(chǎn)權(quán)將成為廠商極為關(guān)心的問題。</p><p>  到目前為止,數(shù)字水印從研究對(duì)象上看主要涉及圖像水印、視頻水印、音頻水印、文本水印和三維網(wǎng)格數(shù)據(jù)水印等幾個(gè)方面,其中大部分的水印研究和論文都集中在圖像研究上,其原因在于圖像是最基本的多媒體數(shù)據(jù),且互聯(lián)網(wǎng)的發(fā)展為圖像水印的應(yīng)用提供了直接大量的應(yīng)用需求。另外視頻水印也吸引了一些研究人員,由于視頻可以看成時(shí)一空域上的

21、連續(xù)圖像序列,從某種意義上講,它與圖像水印的原理非常類似,許多圖像水印的研究結(jié)果可以直接應(yīng)用于視頻水印上。但兩者有一個(gè)重要的差別在于處理信號(hào)的數(shù)量級(jí)上,特別是視頻水印需要考慮實(shí)時(shí)性問題。</p><p>  2.3數(shù)字水印的應(yīng)用</p><p>  數(shù)字水印的應(yīng)用研究成為了國內(nèi)外公司和學(xué)術(shù)界的研究焦點(diǎn)。大部分的工作致力于尋求同時(shí)滿足保真度、魯棒性、嵌入容量和經(jīng)濟(jì)約束的平衡點(diǎn)。針對(duì)幾何和時(shí)間

22、上失真的研究,也有穩(wěn)步進(jìn)展,出現(xiàn)了大量不同變換域的實(shí)驗(yàn)結(jié)果,如頻域變換有DCT,F(xiàn)FT,DWT和Fourier-Mellin等算法,還有大量的算法在MPEG和JPEG編碼中進(jìn)行,因?yàn)檫@樣可以節(jié)省昂貴的水印解碼負(fù)荷,有利于大批量的應(yīng)用,如DVD拷貝控制應(yīng)用等.目前數(shù)字水印的應(yīng)用主要集中在以下幾個(gè)方面:</p><p>  1) 版權(quán)保護(hù) 版權(quán)標(biāo)識(shí)水印是目前研究最多的一類數(shù)字水印。由于數(shù)字作品的拷貝、修改非常容易,而

23、且可以做到與原作完全相同,所以原創(chuàng)者不得不采用一些嚴(yán)重?fù)p害作品質(zhì)量的辦法來加上版權(quán)標(biāo)志,而這種明顯可見的標(biāo)志很容易被篡改。數(shù)字作品的所有者可用密鑰產(chǎn)生一個(gè)水印,并將其嵌入原始數(shù)據(jù),然后公開發(fā)布其水印版本作品。當(dāng)該作品被盜版或出現(xiàn)版權(quán)糾紛時(shí),所有者即可從盜版作品或水印版作品中獲取水印信號(hào)作為依據(jù),從而保護(hù)所有者的權(quán)益。</p><p>  2) 加指紋 如果嵌入到數(shù)字媒體中的數(shù)字水印用以標(biāo)一記媒體的使用者,當(dāng)出現(xiàn)侵

24、權(quán)行為時(shí),通過檢測(cè)水印信息便可跟蹤盜版。此時(shí)數(shù)字水印稱之為數(shù)字指紋。它要求水印信息具有很高的高魯棒性、高容量。為避免未經(jīng)授權(quán)的拷貝制作和發(fā)行,出品人可以將不同用戶的ID或序列號(hào)作為數(shù)字指紋嵌入作品的合法拷貝中。一旦發(fā)現(xiàn)未經(jīng)授權(quán)的拷貝,就可以根據(jù)此拷貝所恢復(fù)出的指紋來確定它的來源。美國TTR公司用DiscGuard防盜版技術(shù)來保護(hù)軟件出版商的知識(shí)產(chǎn)權(quán)、防止軟件被盜版或非法復(fù)制。這種技術(shù)在CD一ROM和DVD盤片上嵌入一個(gè)不可復(fù)制的“數(shù)字指

25、紋,利用這個(gè)“數(shù)字指紋”可以鑒別出光盤是正版還是盜版,從而控制軟件的運(yùn)行,即有“指紋”才能運(yùn)行,沒“指紋”不能運(yùn)行。這個(gè)“數(shù)字指紋”是在母版制作(Mastering)過程中,通過在現(xiàn)有母版制作的激光系統(tǒng)上加入一個(gè)插件或者通過增強(qiáng)型光盤刻錄機(jī)實(shí)現(xiàn)的。用這個(gè)刻有“數(shù)字指紋”的母版復(fù)制出的每一張CD一ROM都含有“數(shù)字指紋,這個(gè)“數(shù)字指紋,不能夠再被復(fù)制的。無論是利用光盤刻錄機(jī)或者用這張CD一ROM再做母版,都不能復(fù)制“數(shù)字指紋”,也就是非法

26、復(fù)制的CD一ROM不含“數(shù)字指紋”,盜版的軟</p><p>  3) 標(biāo)題與注釋 即將作品的標(biāo)題、注釋等內(nèi)容(如,一幅照片的拍攝時(shí)間和地點(diǎn)等)以水印形式嵌入該作品中,這種隱式注釋不需要額外的帶寬,且不易丟失。</p><p>  4) 篡改提示 當(dāng)數(shù)字作品被用于法庭、醫(yī)學(xué)、新聞及商業(yè)時(shí),常需確定它們的內(nèi)容是否被修改、偽造或特殊處理過。為實(shí)現(xiàn)該目的,通常可將原始圖像分成多個(gè)立塊,再將每個(gè)塊

27、加入不同的水印。同時(shí)可通過檢測(cè)每個(gè)數(shù)據(jù)塊中的水印信號(hào),來確定作品的完整性。與其他水印不同的是,這類水印必須是脆弱的,并且檢測(cè)水印信號(hào)時(shí),不需要原始數(shù)據(jù)。</p><p>  5) 使用控制 這種應(yīng)用的一個(gè)典型的例子是DVD 防拷貝系統(tǒng),即將水印信息加入OVO數(shù)據(jù)中,這樣OVO播放機(jī)即可通過檢測(cè)OVO數(shù)據(jù)中的水印信息而判斷其合法性和可拷貝性。從而保護(hù)制造商的商業(yè)利益。</p><p>  6

28、)內(nèi)容認(rèn)證 如果數(shù)字水印不具有魯棒性,則當(dāng)數(shù)字媒體受到處理時(shí),嵌入到其中的水印信息不可避免被破壞;根據(jù)水印被破壞的情況可以對(duì)數(shù)字媒體進(jìn)行內(nèi)容認(rèn)證。此時(shí),數(shù)字水印具有易碎性(或是半易碎性):對(duì)改變媒體內(nèi)容的處理不具有任何魯棒性,對(duì)不改變媒體內(nèi)容的處理具有一定的魯棒性,在此方面優(yōu)于數(shù)字簽名技術(shù)。這方面的研究已經(jīng)有很長時(shí)間了,并且己經(jīng)取得了豐碩的成果。目前主要分為可逆數(shù)字水印和不可逆數(shù)字水印。</p><p>  7)

29、隱蔽通信及其對(duì)抗 數(shù)字水印所依賴的信息隱藏技術(shù)不僅提供了非密碼的安全途徑,可以實(shí)現(xiàn)網(wǎng)絡(luò)情報(bào)戰(zhàn)的革命。網(wǎng)絡(luò)情報(bào)戰(zhàn)是信息戰(zhàn)的重要組成部分,其核心內(nèi)容是利用公用網(wǎng)絡(luò)進(jìn)行保密數(shù)據(jù)傳送。由于經(jīng)過加密的文件往往是混亂無序的,容易引起攻擊者的注意。網(wǎng)絡(luò)多媒體技術(shù)的廣泛應(yīng)用使得利用公用網(wǎng)絡(luò)進(jìn)行保密通信有了新的思路,利用數(shù)字化聲像信號(hào)相對(duì)于人的視覺、聽覺冗余,可以進(jìn)行各種信息隱藏,從而實(shí)現(xiàn)隱蔽通信。</p><p><b&g

30、t;  二、數(shù)字水印技術(shù)</b></p><p>  2.1數(shù)字水印的起源、概念和基本原理</p><p>  信息隱藏,也稱為信息偽裝(StegaflograPhy),該單詞來源于古希臘,意思是將有用或重要的信息隱藏于其他信息里面以掩飾其存在,也就是將機(jī)密信息秘密地隱藏于另一非機(jī)密的文件內(nèi)容之中。密碼學(xué)是研究如何保護(hù)消息內(nèi)容的,而偽裝術(shù)(密寫術(shù))是專門研究如何隱藏它們的存在性

31、。</p><p>  數(shù)字水印技術(shù)的基本思想源于古代的偽裝術(shù),古希臘的斯巴達(dá)人曾將軍事情報(bào)刻在普通的木板上,用石蠟填平,收信的一方只要用火烤熱木板,融化石蠟后就可以看到密信。使用最廣泛的密寫方法恐怕要算化學(xué)密寫了,牛奶、白礬、果汁等都曾充當(dāng)過密寫藥水的角色。大約700年前,在手工造紙技術(shù)中出現(xiàn)了紙張上的水印。</p><p>  2.2數(shù)字水印的嵌入和提取</p><

32、p>  數(shù)字水印是向多媒體數(shù)據(jù)中添加某些數(shù)字信息以達(dá)到文件真?zhèn)舞b別 、版權(quán)保護(hù)等功能。嵌入的水印信息隱藏于宿主文件中,不影響原始文件的可觀性和完整性。數(shù)字圖像水印處理過程主要包括水印生成、嵌入和檢測(cè)三個(gè)步驟。而整個(gè)水印系統(tǒng)還應(yīng)包括外界的攻擊過程。整個(gè)數(shù)字圖像水印系統(tǒng)的基本模型如圖1所示。</p><p>  數(shù)字水印生成過程G的輸入為原始信息m、原始圖像X和水印生成密鑰K1,輸出為待嵌入的數(shù)字水?。住H藗兺?/p>

33、常采用的水印形式是二進(jìn)制序列。有時(shí),數(shù)字水印并不通過生成算法生成 ,而直接給定有意義的圖形或圖標(biāo)作為數(shù)字水印。在水印嵌入過程中,原始圖像X、水?。滓约扒度朊荑€K2經(jīng)過嵌入函數(shù)E的作用,生成含水印圖像 Y。通常 ,嵌入 函數(shù) E用 插入操作符作用在一組特征集F(X)來描述 :F(Y) =F(X) W。根據(jù)水印所嵌入的特征集類型的不同 ,數(shù)字圖像水印算法一般分為空域算法和變換域算法兩類。 另外,一旦生成含水印圖像 ,該圖像將在一定的媒介中傳

34、輸或流通 ,一定會(huì)受到一些有意或無意的攻擊 ,從而得到可疑圖像, 關(guān)于水印檢測(cè),把根據(jù)檢測(cè)密鑰K3(有時(shí)還需要原始圖像X和原始水?。祝┡袛嗫梢蓤D像是否存在水印的過程稱為水印檢測(cè),而把根據(jù)提取密鑰 K3提取可疑圖像中的水印的過程稱為水印提取。</p><p>  三、數(shù)字水印的典型算法</p><p>  數(shù)字水印技術(shù)橫跨了信號(hào)處理、數(shù)字通信、密碼學(xué)、模式識(shí)別等多種學(xué)科,各專業(yè)領(lǐng)域的研究者均

35、有獨(dú)特的研究角度,其算法可謂是五花八門,無所不用,主要的有以下幾種:</p><p>  3.1最低有效位算法(LSB)</p><p>  最低有效位算法(LSB)是L.F.Turner 和 R.G.van Schyndel 等人提出的第一個(gè)數(shù)字水印算法,是一種典型的空間域信息隱藏算法。LSB 算法使用特定的密鑰通過m序列發(fā)生器產(chǎn)生隨機(jī)信號(hào),然后按一定的規(guī)則排列成 2 維水印信號(hào),并逐一

36、插入到原始圖像相應(yīng)像素值的最低幾位。由于水印信號(hào)隱藏在最低位,相當(dāng)于疊加了一個(gè)能量微弱的信號(hào),因而在視覺和聽覺上很難察覺。LSB 水印的檢測(cè)是通過待測(cè)圖像與水印圖像的相關(guān)運(yùn)算和統(tǒng)計(jì)決策實(shí)現(xiàn)的。Stego Dos 、White Noise Storm 、 STools 等早期數(shù)字水印算法都采用了 LSB 算法。LSB 算法雖然可以隱藏較多的信息,但隱藏的信息可以被輕易移去,無法滿足數(shù)字水印的魯棒性要求,因此現(xiàn)在的數(shù)字水印軟件已經(jīng)很少采用L

37、SB 算法了。不過,作為一種大數(shù)據(jù)量的信息隱藏方法, LSB 在隱蔽通信中仍占據(jù)著相當(dāng)重要的地位。</p><p>  本次實(shí)驗(yàn)我所采用就是LSB算法。</p><p>  3.2 Patchwork 算法</p><p>  Patchwork 是麻省理工學(xué)院媒體實(shí)驗(yàn)室 Walter Bander 等人提出的一種數(shù)字水印算法,主要用于打印票據(jù)的防偽。Patchwo

38、rk 數(shù)字水印隱藏在特定圖像區(qū)域的統(tǒng)計(jì)特性中,其魯棒性很強(qiáng),可以有效地抵御剪切、灰度校正、有損壓縮等攻擊,其缺陷是數(shù)據(jù)量較低,對(duì)仿射變換敏感,對(duì)多拷貝平均攻擊的抵抗力較弱。</p><p>  3.3紋理塊映射編碼</p><p>  紋理塊映射將水印信息隱藏在圖像的隨機(jī)紋理區(qū)域中,利用紋理間的相似性掩蓋水印信息。該算法對(duì)濾波、壓縮和扭轉(zhuǎn)等操作具有抵抗能力,但需要人工干預(yù)。</p&g

39、t;<p><b>  3.4 其他</b></p><p>  文本微調(diào)算法、DCT 變換域數(shù)字水印算法、直接序列擴(kuò)頻水印算法等</p><p>  四、LSB算法的VC實(shí)現(xiàn)</p><p>  LSB(最低有效位)算法是一種典型的空間域數(shù)據(jù)隱藏方法,該方法將特定的標(biāo)記隱藏于數(shù)字音頻和數(shù)字圖像內(nèi) 。 在灰度圖像中,每個(gè)像素通常為

40、8位 ,每一位的取值為0或1。在數(shù)字圖像中,每個(gè)像素的各個(gè)位對(duì)圖像的貢獻(xiàn)是不同的 。對(duì)于8位的灰度圖像每個(gè)像素的數(shù)據(jù)可用公式表示為 : 式中:i表示像素的第幾位;表示第i位的取值,{0,1}。</p><p>  這樣,便可以把整個(gè)圖像分解為8?jìng)€(gè)位平面,從LSB(最低有效位 )MSB(最高有效位 )。從位平面的分布來看 ,隨著位平面從低位到高(即 從位平面0到位平面 7),位平面圖像的特征逐漸變得復(fù)雜 ,細(xì)節(jié)不斷

41、增加。 到了比較低的位平面時(shí),單純從一 幅位平面上已經(jīng)逐漸不能看出和測(cè)試圖像的信息了。由于低位所代表的能量很少, 改變低位對(duì)圖像的質(zhì)量沒有太大的影響。LSB方法正是利用這一點(diǎn)在圖像低位隱藏水印信息。</p><p><b>  水印嵌入算法: </b></p><p>  本文采用VC技術(shù)來開發(fā)實(shí)現(xiàn)。所用的嵌入與提取密鑰將明文逐位轉(zhuǎn)換成密文,它是將密鑰流Ki與明文流P

42、i進(jìn)行異或運(yùn)算產(chǎn)生密文比特流;Ci=PiKi ;在解密端 ,密文流與完全相同的密鑰流異或運(yùn)算恢復(fù)出明文流:Pi=CiKi 遮掩消息的LSB 直接被待隱消息的比特位或兩者之間經(jīng)過某種邏輯運(yùn)算的結(jié)果所代替 ,在此用的是異或運(yùn)算。 </p><p><b>  主要代碼如下:</b></p><p>  void CDib::Embed()//嵌入</p>

43、<p><b>  {</b></p><p>  unsigned char bmdata;//bitmap data</p><p>  unsigned char efdata;//embeddedfile data</p><p>  int t = 7;</p><p>  int x[8];

44、</p><p><b>  int s[8];</b></p><p>  int last_bit; //記錄字節(jié)最低位本來的bit</p><p>  for(UINT i1 = 0, i2 = 0; i1 <= bitmap_size - 1, i2 <= embfile_size - 1; i1++)</p>

45、<p><b>  {</b></p><p>  bmdata = *p;</p><p>  for (int j = 0; j <= 7; j++) //計(jì)算各bit位</p><p><b>  {</b></p><p>  x[j] = bmdata & 1;

46、</p><p>  bmdata >>= 1;</p><p><b>  }</b></p><p>  last_bit = x[0];</p><p>  x[0] = x[1] ^ x[2] ^ x[3] ^ x[4] ^ x[5] ^ x[6] ^ x[7];</p><p&g

47、t;  if (t == 7) //宿主圖片每走過八個(gè)字節(jié),計(jì)算一次s[]</p><p><b>  {</b></p><p>  efdata = *q;</p><p>  for (j = 0; j <= 7; j++)</p><p><b>  {</b></p>

48、;<p>  s[j] = efdata & 1;</p><p>  efdata >>= 1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  x[0] ^= s[t];//隱藏信息</p>&l

49、t;p>  if (last_bit == 0) //嵌入隱藏信息</p><p><b>  {</b></p><p>  *p |= x[0];</p><p><b>  }</b></p><p><b>  else</b></p><p

50、><b>  {</b></p><p>  *p &= 254 + x[0];</p><p><b>  }</b></p><p><b>  p++;</b></p><p><b>  t--;</b></p><

51、;p>  if (t == -1) //需要計(jì)算一次s[]</p><p><b>  {</b></p><p><b>  t = 7;</b></p><p><b>  q++;</b></p><p><b>  i2++;</b><

52、;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  設(shè)計(jì)中不僅可以把水印嵌入到最低位,而且將水印分別嵌入到第1位,第2位等。通過對(duì)比,可以驗(yàn)證水印嵌入到最低為具有更好的不可見性,當(dāng)水印逐漸嵌入到

53、高位時(shí),水印的不可見性越來越不好,甚至影響到圖片的視覺效果。</p><p><b>  水印提取算法設(shè)計(jì):</b></p><p><b>  主要代碼:</b></p><p>  void CDib::Pick()//提取</p><p><b>  {</b></

54、p><p>  m_pFile = new unsigned char [embfile_size];</p><p>  unsigned char *q = m_pFile;</p><p>  unsigned char bmdata;//bitmap data</p><p>  int x[8];</p><p&g

55、t;<b>  int s[8];</b></p><p>  int t = 7;</p><p>  for (UINT i1 = 0, i2 = 0; i1 <= bitmap_size - 1, i2 <= embfile_size - 1; i1++)</p><p><b>  {</b></

56、p><p>  bmdata = *p;</p><p>  for (int j = 0; j <= 7; j++) //計(jì)算各bit位</p><p><b>  {</b></p><p>  x[j] = bmdata & 1;</p><p>  bmdata >>

57、= 1;</p><p><b>  }</b></p><p>  s[t] = x[0] ^ x[1] ^ x[2] ^ x[3] ^ x[4] ^ x[5] ^ x[6] ^ x[7];</p><p><b>  t--;</b></p><p>  if (t == -1) //s[7]到

58、s[0]組成一個(gè)字節(jié)</p><p><b>  {</b></p><p>  *q = s[7] * 128 + s[6] * 64 + s[5] * 32 + s[4] * 16 + </p><p>  s[3] * 8 + s[2] * 4 + s[1] * 2 + s[0];</p><p><b>

59、;  t = 7;</b></p><p><b>  i2++;</b></p><p><b>  q++;</b></p><p><b>  }</b></p><p><b>  p++;</b></p><p&g

60、t;<b>  }</b></p><p>  } </p><p>  對(duì)于水印的圖像提取,也就是將嵌入水印后的圖片的每個(gè)像素的R,G,B分量的最后一位還原成水印對(duì)引的二進(jìn)制序列,即用8個(gè)連續(xù)的最低位通過異或運(yùn)算獲取。</p><p><b>  五 、實(shí)驗(yàn)體會(huì)</b></p><

61、p>  本文通過VC技術(shù)實(shí)現(xiàn)了數(shù)字圖像水印LSB算法 ,嵌入與提取密鑰是對(duì)稱密鑰算法中的序列密碼算法。通過設(shè)計(jì)可以方便地在宿主圖像中嵌人大量數(shù)字信息 ,在嵌入水 印容量上能實(shí)現(xiàn)較高容量和在最低位嵌入時(shí)有較好的不可見性。LSB算法的優(yōu)點(diǎn)是其算法簡(jiǎn)單,計(jì)算速度比較快。但是對(duì)圖像的各種操作如壓縮、剪切等 ,都會(huì)使算法的可靠性受到影響,也有可能通過噪聲增加或有損 壓縮而消除水印,即魯棒性較差 ?!?針對(duì)LSB算法的特點(diǎn),我們可以

62、提出改進(jìn):把水印信息先進(jìn)行壓縮、加密編碼 ,通過相應(yīng)函數(shù)重新排序,打亂正常序列,隨機(jī)形式加入印信息 ,來提高水印算法的魯棒性和安全性。因此,LSB算法需要結(jié)合加密等方法提高其魯棒性和安全性。藏較多的信息,但隱藏的信息可以被輕易移去,無法滿足數(shù)字水印的魯棒性要求,因此現(xiàn)在的數(shù)字水印軟件已經(jīng)很少采用LSB 算法了。不過,作為一種大數(shù)據(jù)量的信息隱藏方法, LSB 在隱蔽通信中仍占據(jù)著相當(dāng)重要的地位。</p><p>&

63、lt;b>  參考書目:</b></p><p>  【1】數(shù)字水印理論與技術(shù) 金聰編著 清華大學(xué)出版社</p><p>  【2】數(shù)字水印理論與技術(shù) 楊義先 鈕心忻 編著 高等教育出版社</p><p>  【3】Visual C++圖形用戶界面開發(fā)指南 李傅軒等編著 清華大學(xué)出 版社</p><p>  【4】胡榮

64、,陳健.數(shù)字圖像的水印技術(shù).上海交通大學(xué)學(xué)報(bào),2001</p><p>  附錄1:算法設(shè)計(jì)說明書</p><p>  數(shù)字水印是向多媒體數(shù)據(jù)中添加某些數(shù)字信息以達(dá)到文件真?zhèn)舞b別 、版權(quán)保護(hù)等功能。嵌入的水印信息隱藏于宿主文件中,不影響原始文件的可觀性和完整性。數(shù)字圖像水印處理過程主要包括水印生成、嵌入和檢測(cè)三個(gè)步驟。而整個(gè)水印系統(tǒng)還應(yīng)包括外界的攻擊過程。整個(gè)數(shù)字圖像水印系統(tǒng)的基本模型如圖

65、1所示。</p><p>  數(shù)字水印生成過程G的輸入為原始信息m、原始圖像X和水印生成密鑰K1,輸出為待嵌入的數(shù)字水?。住H藗兺ǔ2捎玫乃⌒问绞嵌M(jìn)制序列。有時(shí),數(shù)字水印并不通過生成算法生成 ,而直接給定有意義的圖形或圖標(biāo)作為數(shù)字水印。在水印嵌入過程中,原始圖像X、水印W以及嵌入密鑰K2經(jīng)過嵌入函數(shù)E的作用,生成含水印圖像 Y。通常 ,嵌入 函數(shù) E用 插入操作符作用在一組特征集F(X)來描述 :F(Y) =

66、F(X) W。根據(jù)水印所嵌入的特征集類型的不同 ,數(shù)字圖像水印算法一般分為空域算法和變換域算法兩類。 另外,一旦生成含水印圖像 ,該圖像將在一定的媒介中傳輸或流通 ,一定會(huì)受到一些有意或無意的攻擊 ,從而得到可疑圖像, 關(guān)于水印檢測(cè),把根據(jù)檢測(cè)密鑰K3(有時(shí)還需要原始圖像X和原始水?。祝┡袛嗫梢蓤D像是否存在水印的過程稱為水印檢測(cè),而把根據(jù)提取密鑰 K3提取可疑圖像中的水印的過程稱為水印提取。</p><p>  

67、LSB(最低有效位)算法是一種典型的空間域數(shù)據(jù)隱藏方法,該方法將特定的標(biāo)記隱藏于數(shù)字音頻和數(shù)字圖像內(nèi) 。 在灰度圖像中,每個(gè)像素通常為8位 ,每一位的取值為0或1。在數(shù)字圖像中,每個(gè)像素的各個(gè)位對(duì)圖像的貢獻(xiàn)是不同的 。對(duì)于8位的灰度圖像每個(gè)像素的數(shù)據(jù)可用公式表示為 : 式中:i表示像素的第幾位;表示第i位的取值,{0,1}。</p><p>  這樣,便可以把整個(gè)圖像分解為8?jìng)€(gè)位平面,從LSB(最低有效位 )MS

68、B(最高有效位 )。從位平面的分布來看 ,隨著位平面從低位到高(即 從位平面0到位平面 7),位平面圖像的特征逐漸變得復(fù)雜 ,細(xì)節(jié)不斷增加。 到了比較低的位平面時(shí),單純從一 幅位平面上已經(jīng)逐漸不能看出和測(cè)試圖像的信息了。由于低位所代表的能量很少, 改變低位對(duì)圖像的質(zhì)量沒有太大的影響。LSB方法正是利用這一點(diǎn)在圖像低位隱藏水印信息。</p><p>  本文采用VC技術(shù)來開發(fā)實(shí)現(xiàn)。所用的嵌入與提取密鑰將明文逐位轉(zhuǎn)換

69、成密文,它是將密鑰流Ki與明文流Pi進(jìn)行異或運(yùn)算產(chǎn)生密文比特流;Ci=PiKi ;在解密端 ,密文流與完全相同的密鑰流異或運(yùn)算恢復(fù)出明文流:Pi=CiKi 遮掩消息的LSB 直接被待隱消息的比特位或兩者之間經(jīng)過某種邏輯運(yùn)算的結(jié)果所代替 ,在此用的是異或運(yùn)算。</p><p><b>  附錄二:主要原程序</b></p><p>  // DIB.cpp</p&

70、gt;<p>  #include "stdafx.h"</p><p>  #include "DIB.h"</p><p>  CDib::CDib()</p><p><b>  {</b></p><p>  m_pDib = NULL;</p>

71、<p>  m_pWordData = NULL;</p><p>  m_pFile = NULL;</p><p>  m_pOldDibShow = NULL;</p><p><b>  }</b></p><p>  CDib::~CDib()</p><p><b&g

72、t;  {</b></p><p>  if( m_pDib != NULL )</p><p>  delete [] m_pDib;</p><p>  if( m_pWordData != NULL )</p><p>  delete [] m_pWordData;</p><p>  if (m_

73、pFile != NULL)</p><p>  delete [] m_pFile;</p><p>  if (m_pOldDibShow != NULL)</p><p>  delete [] m_pOldDibShow;</p><p><b>  }</b></p><p>  BOO

74、L CDib::Load( const char *pszFilename )</p><p><b>  {</b></p><p><b>  CFile cf;</b></p><p>  if( !cf.Open( pszFilename, CFile::modeRead ) )</p><p&

75、gt;  return( FALSE );</p><p>  DWORD dwDibSize;</p><p>  dwDibSize =</p><p>  cf.GetLength() - sizeof( BITMAPFILEHEADER );</p><p>  unsigned char *pDib;</p><

76、p>  pDib = new unsigned char [dwDibSize];</p><p>  if( pDib == NULL )</p><p>  return( FALSE );</p><p>  BITMAPFILEHEADER BFH;</p><p><b>  try{</b></p

77、><p>  if( cf.Read( &BFH, sizeof( BITMAPFILEHEADER ) )</p><p>  != sizeof( BITMAPFILEHEADER ) ||</p><p>  BFH.bfType != 'MB' ||</p><p>  cf.Read( pDib, dwDibSi

78、ze ) != dwDibSize ){</p><p>  delete [] pDib;</p><p>  return( FALSE );</p><p><b>  }</b></p><p><b>  }</b></p><p>  catch( CFileEx

79、ception *e ){</p><p>  e->Delete();</p><p>  delete [] pDib;</p><p>  return( FALSE );</p><p><b>  }</b></p><p>  cf.Close();</p><

80、;p>  if( m_pDib != NULL )</p><p>  delete m_pDib;</p><p>  if (BFH.bfReserved1 != 0) //含有隱藏信息,保存其大小</p><p><b>  {</b></p><p>  if (BFH.bfReserve

81、d2 == 0)</p><p>  embfile_size = BFH.bfReserved1;</p><p><b>  else</b></p><p>  embfile_size = BFH.bfReserved1 + 65535;</p><p><b>  }</b></p&

82、gt;<p>  m_pDib = pDib;</p><p>  m_dwDibSize = dwDibSize;</p><p>  m_pBIH = (BITMAPINFOHEADER *) m_pDib;</p><p>  m_pPalette =</p><p>  (RGBQUAD *) &m_pDib[s

83、izeof(BITMAPINFOHEADER)];</p><p>  m_nPaletteEntries = 1 << m_pBIH->biBitCount;</p><p>  if( m_pBIH->biBitCount > 8 ) </p><p>  m_nPaletteEntries = 0;</p&g

84、t;<p>  else if( m_pBIH->biClrUsed != 0 )</p><p>  m_nPaletteEntries = m_pBIH->biClrUsed;</p><p>  m_pDibBits = </p><p>  &m_pDib[sizeof(BITMAPI

85、NFOHEADER)+</p><p>  m_nPaletteEntries*sizeof(RGBQUAD)];</p><p>  if( m_Palette.GetSafeHandle() != NULL )</p><p>  m_Palette.DeleteObject();</p><p>  if( m_nPaletteEntr

86、ies != 0 ){ </p><p>  LOGPALETTE *pLogPal = (LOGPALETTE *) new char</p><p>  [sizeof(LOGPALETTE)+</p><p>  m_nPaletteEntries*sizeof(PALETTEENTRY)];</p><p>  if( pL

87、ogPal != NULL ){</p><p>  pLogPal->palVersion = 0x300;</p><p>  pLogPal->palNumEntries = m_nPaletteEntries;</p><p>  for( int i=0; i<m_nPaletteEntries; i++ ){</p>&l

88、t;p>  pLogPal->palPalEntry[i].peRed =</p><p>  m_pPalette[i].rgbRed;</p><p>  pLogPal->palPalEntry[i].peGreen =</p><p>  m_pPalette[i].rgbGreen;</p><p>  pLogP

89、al->palPalEntry[i].peBlue =</p><p>  m_pPalette[i].rgbBlue;</p><p><b>  }</b></p><p>  m_Palette.CreatePalette( pLogPal );</p><p>  delete [] pLogPal;<

90、;/p><p><b>  }</b></p><p><b>  }</b></p><p>  m_BitCount = 24; //24位位圖</p><p>  p = m_pDibBits; //指向位圖數(shù)據(jù)的指針,用來執(zhí)行處理操作用</

91、p><p>  bitmap_size = m_dwDibSize - (m_pDibBits - m_pDib);//真正的位圖數(shù)據(jù)的大?。闯^結(jié)構(gòu)外)</p><p>  tag = BFH.bfReserved1;</p><p>  return( TRUE );</p><p><b>  }</b></p

92、><p>  BOOL CDib::Save( const char *pszFilename ) //保存含有隱藏信息的bmp</p><p><b>  {</b></p><p>  if( m_pDib == NULL )</p><p>  return( FALSE );</p><p>

93、<b>  CFile cf;</b></p><p>  if( !cf.Open( pszFilename,</p><p>  CFile::modeCreate | CFile::modeWrite ) )</p><p>  return( FALSE );</p><p><b>  try{<

94、;/b></p><p>  BITMAPFILEHEADER BFH;</p><p>  memset( &BFH, 0, sizeof( BITMAPFILEHEADER ) );</p><p>  BFH.bfType = 'MB';</p><p>  BFH.bfSize = sizeof( BIT

95、MAPFILEHEADER ) + m_dwDibSize;</p><p>  BFH.bfOffBits = sizeof( BITMAPFILEHEADER ) +</p><p>  sizeof( BITMAPINFOHEADER ) +</p><p>  m_nPaletteEntries * sizeof( RGBQUAD );</p>

96、<p>  if (embfile_size <= 65535) //由于bfReserved1是unsigned short型的,大小可能不能滿足要求,可能要用到reserved2</p><p>  BFH.bfReserved1 = embfile_size; </p><p><b>  else</b></p><

97、;p><b>  {</b></p><p>  BFH.bfReserved1 = embfile_size - 65535;</p><p>  BFH.bfReserved2 = 1; //標(biāo)記</p><p><b>  }</b></p><p>  cf.Write( &B

98、FH, sizeof( BITMAPFILEHEADER ) );</p><p>  cf.Write( m_pDib, m_dwDibSize );</p><p><b>  }</b></p><p>  catch( CFileException *e ){</p><p>  e->Delete();&

99、lt;/p><p>  return( FALSE );</p><p><b>  }</b></p><p>  return( TRUE );</p><p><b>  }</b></p><p>  BOOL CDib::Draw( CDC *pDC, int nX,

100、int nY, int nWidth, int nHeight, int Style )</p><p><b>  {</b></p><p>  if( m_pDib == NULL )</p><p>  return( FALSE );</p><p>  long vWidth = m_pBIH->biW

101、idth;</p><p>  if( nWidth == -1 )</p><p>  nWidth = m_pBIH->biWidth;</p><p>  if( nHeight == -1 )</p><p>  nHeight = m_pBIH->biHeight;</p><p>  if (S

102、tyle) </p><p><b>  {</b></p><p>  StretchDIBits( pDC->m_hDC, nX, nY,</p><p>  nWidth, nHeight,</p><p><b>  0, 0,</b></p><p>  

103、m_pBIH->biWidth, m_pBIH->biHeight,</p><p>  m_pDibBits,</p><p>  (BITMAPINFO *) m_pBIH,</p><p>  BI_RGB, SRCCOPY );</p><p><b>  }</b></p><p

104、><b>  else</b></p><p><b>  {</b></p><p>  SetDIBitsToDevice( pDC->m_hDC, nX, nY,</p><p>  m_pBIH->biWidth, m_pBIH->biHeight,</p><p>

105、<b>  0, 0,</b></p><p>  0, m_pBIH->biHeight,</p><p>  m_pDibBits,</p><p>  (BITMAPINFO *) m_pBIH,</p><p><b>  BI_RGB);</b></p><p&g

106、t;<b>  }</b></p><p>  return( TRUE );</p><p><b>  }</b></p><p>  BOOL CDib::LoadEmbFile(const char * pszFilename)</p><p><b>  {</b>

107、</p><p><b>  CFile cf;</b></p><p>  if( !cf.Open( pszFilename, CFile::modeRead ) )</p><p>  return( FALSE );</p><p>  DWORD dwFileSize;</p><p>

108、  dwFileSize = cf.GetLength();</p><p>  embfile_size = dwFileSize;</p><p>  unsigned char *pFile;</p><p>  pFile = new unsigned char [dwFileSize];</p><p>  cf.Read( pFi

109、le, dwFileSize ); //將文件中內(nèi)容讀入數(shù)組,解下來就開始嵌入操作</p><p>  m_pFile = pFile;</p><p>  q = pFile; //記錄下位置</p><p>  return true;</p><p><b>  }</b></p&g

110、t;<p>  void CDib::Embed()//嵌入</p><p><b>  {</b></p><p>  unsigned char bmdata;//bitmap data</p><p>  unsigned char efdata;//embeddedfile data</p><p>

111、;  int t = 7;</p><p>  int x[8];</p><p><b>  int s[8];</b></p><p>  int last_bit; //記錄字節(jié)最低位本來的bit</p><p>  for(UINT i1 = 0, i2 = 0; i1 <= bitmap_size

112、- 1, i2 <= embfile_size - 1; i1++)</p><p><b>  {</b></p><p>  bmdata = *p;</p><p>  for (int j = 0; j <= 7; j++) //計(jì)算各bit位</p><p><b>  {</b&g

113、t;</p><p>  x[j] = bmdata & 1;</p><p>  bmdata >>= 1;</p><p><b>  }</b></p><p>  last_bit = x[0];</p><p>  x[0] = x[1] ^ x[2] ^ x[3]

114、^ x[4] ^ x[5] ^ x[6] ^ x[7];</p><p>  if (t == 7) //宿主圖片每走過八個(gè)字節(jié),計(jì)算一次s[]</p><p><b>  {</b></p><p>  efdata = *q;</p><p>  for (j = 0; j <= 7; j++)</

115、p><p><b>  {</b></p><p>  s[j] = efdata & 1;</p><p>  efdata >>= 1;</p><p><b>  }</b></p><p><b>  }</b></p>

116、;<p>  x[0] ^= s[t];//隱藏信息</p><p>  if (last_bit == 0) //嵌入隱藏信息</p><p><b>  {</b></p><p>  *p |= x[0];</p><p><b>  }</b></p><

117、p><b>  else</b></p><p><b>  {</b></p><p>  *p &= 254 + x[0];</p><p><b>  }</b></p><p><b>  p++;</b></p>&l

118、t;p><b>  t--;</b></p><p>  if (t == -1) //需要計(jì)算一次s[]</p><p><b>  {</b></p><p><b>  t = 7;</b></p><p><b>  q++;</b><

119、;/p><p><b>  i2++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void CDib::Pick()//提取<

120、;/p><p><b>  {</b></p><p>  m_pFile = new unsigned char [embfile_size];</p><p>  unsigned char *q = m_pFile;</p><p>  unsigned char bmdata;//bitmap data</p&

121、gt;<p>  int x[8];</p><p><b>  int s[8];</b></p><p>  int t = 7;</p><p>  for (UINT i1 = 0, i2 = 0; i1 <= bitmap_size - 1, i2 <= embfile_size - 1; i1++)<

122、;/p><p><b>  {</b></p><p>  bmdata = *p;</p><p>  for (int j = 0; j <= 7; j++) //計(jì)算各bit位</p><p><b>  {</b></p><p>  x[j] = bmdata &

123、amp; 1;</p><p>  bmdata >>= 1;</p><p><b>  }</b></p><p>  s[t] = x[0] ^ x[1] ^ x[2] ^ x[3] ^ x[4] ^ x[5] ^ x[6] ^ x[7];</p><p><b>  t--;</b&g

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論