版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、圖像的信息隱藏技術(shù)的實(shí)現(xiàn)與討論1. 引言數(shù)字圖像的信息隱藏技術(shù)是數(shù)字圖像處理領(lǐng)域中最具挑戰(zhàn)性、最為活躍的研究課題z-0本 文概述了數(shù)字圖像的信息隱藏技術(shù),并給出了一個(gè)新的基于彩色靜止數(shù)字圖像的信息隱藏算法。數(shù)字圖像可分為靜止圖像和動(dòng)態(tài)圖像兩種,后者一般稱為視頻圖像。視頻圖像的每一幀均可 看作是一幅靜止圖像,但是這些靜止圖像z間并不是相互孤立的,而是存在時(shí)間軸上的相關(guān)性。 靜止圖像是像索(pixel)的集合,和鄰像素點(diǎn)所對(duì)應(yīng)的實(shí)際距離稱為圖像的空間分辨率。根據(jù) 像索顏色信息的不同,數(shù)字圖像可分為二值圖像、灰度圖像以及彩色圖像。數(shù)字圖像的最終感受 者是人的眼睛,人眼感受到的兩幅質(zhì)量非常相同的數(shù)字圖
2、像的像索值可能存在很人的差別。這樣, 依賴于人的視覺(jué)系統(tǒng)(human visual system, hvs)的不完善性,就為數(shù)字圖像的失真壓縮和信 息隱藏提供了非常巨大的施展空間。信息隱藏9信息加密是不盡相同的,信息加密是隱藏信息的內(nèi)容,而信息隱藏是隱藏信息的 存在性,信息隱藏比信息加密更為安全,因?yàn)樗蝗菀滓鸸粽叩淖⒁狻?. 信息隱藏技術(shù)綜述2. 1信息隱藏簡(jiǎn)介信息隱藏(information hiding),也稱作數(shù)據(jù)隱藏(data hiding),或稱作數(shù)字水卬(digital watermarking)o簡(jiǎn)單來(lái)講,信息隱藏是指將某一信號(hào)(一般稱z為簽字信號(hào),signature si
3、gnal ) 嵌入(embedding)另一信號(hào)(一般稱z為主信號(hào),host signal,或稱z為掩護(hù)媒體,cover-media) 的過(guò)程,掩護(hù)媒體經(jīng)嵌入信息后變成一個(gè)偽裝媒體(stegano-media)o這一嵌入過(guò)程需要滿足下 列條件:簽字信號(hào)的不可感知性(imperceptibility).換句話講,簽字信號(hào)嵌入后,主信號(hào)的感 知特性沒(méi)有明顯的改變,簽字信號(hào)被主信號(hào)隱藏了起來(lái)。簽字信號(hào)的魯棒性(robustness)。簽字信號(hào)對(duì)主信號(hào)的各種失真變換,如失真信號(hào)壓縮、 仿射變換、加噪、a/d或d/a轉(zhuǎn)換等,以及各種惡意性攻擊(malicious attack),都應(yīng)體現(xiàn)出 一定的魯棒性
4、。除非主信號(hào)的感知特性被明顯的破壞,簽字信號(hào)將很難被去除。一般來(lái)講,簽字信號(hào)的嵌入不增加主信號(hào)的存儲(chǔ)空間和傳輸帶寬。也就是說(shuō),簽字信號(hào)嵌 入后,表而上很難覺(jué)察到信息的改變。信息隱藏的發(fā)展歷史可以一宜追溯到匿形術(shù)(steganography) 的使用。匿形術(shù)一詞來(lái) 源于古希臘文屮邙急藏的和圖形兩個(gè)詞語(yǔ)的組合。雖然匿形術(shù)"與"密碼術(shù)(cryptography) ” 都是致力于信息的保密技術(shù),但是,兩者的設(shè)計(jì)思想?yún)s完全不同。密碼術(shù)主要通過(guò)設(shè)計(jì)加密技 術(shù),使保密信息不可讀,但是對(duì)于非授權(quán)者來(lái)講,雖然他無(wú)法獲知保密信息的具體內(nèi)容,卻能意 識(shí)到保密信息的存在。而匿形術(shù)則致力于通過(guò)設(shè)計(jì)粘
5、妙的方法,使得非授權(quán)者根本無(wú)從得知保 密信息的存在與否。相對(duì)于現(xiàn)代密碼學(xué)來(lái)講,信息隱藏的最大優(yōu)勢(shì)在于它并不限制對(duì)主信號(hào)的存 取和訪問(wèn),而是致力于簽字信號(hào)的安全保密性。2.2信息隱藏的關(guān)鍵技術(shù)信息隱藏技術(shù)的關(guān)鍵在于如何處理簽字信號(hào)的魯棒性、不可感知性、以及所嵌入的數(shù)據(jù)量這 三者之間的關(guān)系。判斷信息隱藏算法優(yōu)劣的一般衡量準(zhǔn)則為:1) .對(duì)于主信號(hào)發(fā)生的部分失真,簽字信號(hào)是否具備一定的魯棒性。2) .對(duì)于有意或無(wú)意的竊取、干擾或去除操作,簽字信號(hào)是否具備一定的抵抗能力,從而 保證隱藏信息的安全可靠和完整性。3) .簽字信號(hào)的嵌入是否嚴(yán)重降低了主信號(hào)的感知效果。4) .數(shù)據(jù)嵌入量的大小。對(duì)于某一特定的
6、信息隱藏算法來(lái)講,它不可能在上述的衡量準(zhǔn)則下同時(shí)達(dá)到最優(yōu)。顯然,數(shù) 據(jù)的嵌入量越大,簽字信號(hào)對(duì)原始主信號(hào)感知效果的影響也會(huì)越大;而簽字信號(hào)的魯棒性越好, 其不可感知性也會(huì)就隨z降低,反z亦然。由于信息隱藏的應(yīng)用領(lǐng)域十分寬廣,不同的應(yīng)用背景 対莫技術(shù)要求也不盡相同。因此,有必耍從不同的應(yīng)川背景出發(fā)對(duì)信息隱藏技術(shù)進(jìn)行分類,進(jìn)而 分別研究它們的技術(shù)需求。根據(jù)應(yīng)用背景的不同,信息隱藏技術(shù)大致可分為三類:(1) 版權(quán)保護(hù)(copyright protection)到口前為止,信息隱藏技術(shù)的絕大部分研究成果都是在這一應(yīng)用領(lǐng)域中取得的。信息隱藏技 術(shù)在應(yīng)用于版權(quán)保護(hù)時(shí),所嵌入的簽字信號(hào)通常被稱作數(shù)字水印(d
7、igital watermark) 版 權(quán)保護(hù)所需恢入的數(shù)據(jù)量最小,但対簽字信號(hào)的安全性和魯棒性要求也最高,甚至是十分苛刻的。 為明確起見(jiàn),應(yīng)用于版權(quán)保護(hù)的信息隱藏技術(shù)-般稱作魯棒型水卬技術(shù),而所嵌入的簽字信號(hào) 則相應(yīng)的稱作魯棒型水印(robust watennark) ”,從而與下文將要提到的脆弱型水印區(qū)別開(kāi) 來(lái)。而一般所提到的數(shù)字水印則多指魯棒型水印。由于魯棒型數(shù)字水印用于確認(rèn)主信號(hào)的原作者或版權(quán)的合法擁冇者,它必須保證對(duì)原始版權(quán) 的準(zhǔn)確無(wú)謀的標(biāo)識(shí)。因?yàn)閿?shù)字水印時(shí)刻面臨著用戶或侵權(quán)者右意或惡意的破壞,因此,魯棒型水 印技術(shù)必須保證在主信號(hào)可能發(fā)生的各種失真變換下,以及各種惡意攻擊下都具備很
8、高的抵抗能 力。與此同時(shí),由于耍求保證原始信號(hào)的感知效果盡可能不被破壞,因此對(duì)魯棒型水印的不可見(jiàn) 性也有很髙的要求。如何設(shè)計(jì)一套完美的數(shù)字水印算法,并伴隨以制訂相應(yīng)的安全體系結(jié)構(gòu)和標(biāo) 準(zhǔn),從而實(shí)現(xiàn)真正實(shí)用的版權(quán)保護(hù)方案,是信息隱藏技術(shù)最具挑戰(zhàn)性也最具吸引力的一個(gè)課題。(2) 數(shù)據(jù)完整性鑒定(integrity authentication)數(shù)據(jù)完整性鑒定,又稱作數(shù)據(jù)篡改驗(yàn)證(tamper proof),是指對(duì)某一信號(hào)的真?zhèn)位蛲暾?的判別,并進(jìn)一步需要指出該信號(hào)與原始真實(shí)信號(hào)的差別,即提供冇關(guān)證據(jù)指明真實(shí)信號(hào)町能經(jīng) 歷的篡改操作7。更形式化的講,假定接收到一多媒體信號(hào)g (圖像、音頻或視頻信號(hào)
9、),初步 判斷它很可能是某一原始真實(shí)信號(hào)f的修改版本。數(shù)據(jù)篡改驗(yàn)證的任務(wù)就是在對(duì)原始信號(hào)f的具 體內(nèi)容不可知的情況下,以最大的可能判斷是否薩心一般的數(shù)據(jù)篡改驗(yàn)證過(guò)程如圖3所示。圖3數(shù)據(jù)篡改驗(yàn)證一般過(guò)程實(shí)用的數(shù)據(jù)篡改驗(yàn)證方法應(yīng)致力于滿足以下要求:以最大的可能指岀是否有某種形式的篡改操作發(fā)生;提供對(duì)篡改后信號(hào)失真程度的度量方法;在無(wú)從得知原始真實(shí)信號(hào)的內(nèi)容或其他與真實(shí)信號(hào)內(nèi)容相關(guān)的信息的條件卜,判斷可能 發(fā)牛的篡改操作的具體類別,如判別是濾波、壓縮,還是替代操作等;與此同時(shí),應(yīng)根據(jù)具體的 應(yīng)用背景,對(duì)經(jīng)篡改后的信號(hào)給出和應(yīng)的可信度;無(wú)需維護(hù)和同步操作任何與原始信號(hào)相分離的其它附加數(shù)據(jù),即可恢復(fù)重建
10、原始真實(shí)信 號(hào)。脆弱型水印(fragile watermark) 技術(shù)為數(shù)據(jù)篡改驗(yàn)證提供了一種新的解決途徑。該水 印技術(shù)在原始真實(shí)信號(hào)中嵌入某種標(biāo)記信息,通過(guò)鑒別這些標(biāo)記信息的改動(dòng),達(dá)到對(duì)原始數(shù)據(jù)完 整性檢驗(yàn)的h的。因此,與魯棒型水卬不同的是,脆弱型水卬應(yīng)隨著主信號(hào)的變動(dòng)而做出相應(yīng)的 改變,即體現(xiàn)出脆弱性。但是,脆弱型水印的脆弱性并不是絕對(duì)的。對(duì)主信號(hào)的某些必要性操作, 如修剪或壓縮,脆弱型水印也應(yīng)體現(xiàn)出一能的魯棒性,從而將這些不影響主信號(hào)最終可侍度的操 作與那些蓄意破壞操作區(qū)分開(kāi)來(lái)。另一方面,對(duì)脆弱型水印的不可見(jiàn)性和所嵌入數(shù)據(jù)量的要求與 魯棒型水印是近似的。(3) 擴(kuò)充數(shù)據(jù)的嵌入(augme
11、ntation data embedding)擴(kuò)充數(shù)據(jù)包拾對(duì)主信號(hào)的描述或參考信息、控制信息以及其它媒體信號(hào)等等。描述信息町以 是特征定位信息、標(biāo)題或內(nèi)容注釋信息籌,而控制信息的嵌入則可實(shí)現(xiàn)對(duì)主信號(hào)的存取控制和監(jiān) 測(cè)。例如,一方面針對(duì)不同所有權(quán)級(jí)別的用戶,可以分別授予不同的存取權(quán)限。另一方面,也可 通過(guò)嵌入一類通常被稱作時(shí)間印章(time stamp) 的信息,以跟蹤某一特定內(nèi)容對(duì)象的創(chuàng)建、 行為以及被修改的歷史。這樣,利用信息隱藏技術(shù)可實(shí)現(xiàn)對(duì)這一對(duì)彖歷史使用操作信息的記錄, 而無(wú)需在原信號(hào)上附加頭文件或歷史文件,因?yàn)槭褂酶郊游募?,一?lái)容易被改動(dòng)或丟失,二來(lái)需 要更多的傳輸帶寬和存儲(chǔ)空間。與此
12、同時(shí),在給定的主信號(hào)中還可嵌入其它完整而有意義的媒體 信號(hào),例如在給定視頻序列中嵌入另一視頻序列。因此,信息隱藏技術(shù)提供了這樣一種非常有意 義而極具魅力的應(yīng)用前景,它允許用八將多媒體信息剪裁成他們所需耍的形式和內(nèi)容8。例 如,在某一頻道內(nèi)收看電視,町以通過(guò)信息隱藏方法在所播放的同一個(gè)電視節(jié)h中嵌入更多的鏡 頭以及多種語(yǔ)言跟蹤,使用八能夠按照個(gè)人的喜好和指定的語(yǔ)言方式播放。這在一楚意義上實(shí)現(xiàn) 了視頻點(diǎn)播(video on demand, v0d)的功能,而英最人的優(yōu)點(diǎn)在于它減少了一般v0d服務(wù)所需 的傳輸帶寬利存儲(chǔ)空間。顯然,相對(duì)丁數(shù)字水卬來(lái)講,擴(kuò)充數(shù)據(jù)的嵌入所需隱藏的數(shù)據(jù)量較人,人量數(shù)據(jù)的嵌入
13、對(duì)簽 字信號(hào)的不可見(jiàn)性提出了挑戰(zhàn)。另一方面,由于擴(kuò)充數(shù)據(jù)本身的可利用價(jià)值,簽字信號(hào)一般不會(huì) 受到蓄意攻擊的困擾。但是,對(duì)于主信號(hào)的尺度變換、剪切或?qū)Ρ榷仍鰪?qiáng)等操作,特別是失真編 碼,擴(kuò)充數(shù)據(jù)嵌入技術(shù)也要具備一定的魯棒性。2. 3彩色圖像的bmp文件格式bmp圖像文件格式,是微軟公司為其wtxdows環(huán)境設(shè)置的標(biāo)準(zhǔn)圖像格式,并且內(nèi)含了-套圖 像處理的api函數(shù)。隨著windows在世界范囤內(nèi)的普及,bmp文件格式越來(lái)越多地被各種應(yīng)用 軟件所支持。bmp圖像文件是位圖文件,位圖表示的是將一幅圖像分割成柵格,柵格的每一點(diǎn)稱 為像素,每一個(gè)像素具有自己的rgb值,即一幅圖像是由一系列像素點(diǎn)構(gòu)成的點(diǎn)陣。
14、位圖文件格 式支持4位rle (行程長(zhǎng)度編碼)以及8位和24位編碼。在本文屮我們只處理24位格式。24位bmp圖像文件的結(jié)構(gòu)特點(diǎn)為: 每個(gè)文件只能非 壓縮地存放一幅彩色圖像;文件頭由54個(gè)字節(jié)的數(shù)據(jù)段組成,莫中包含有該位圖文件的類型、 大小、圖像尺寸及打印格式等;從第55個(gè)字節(jié)開(kāi)始,是該文件的圖像數(shù)據(jù)部分,數(shù)據(jù)的排列 順序以圖像的左下角為起點(diǎn),從左到右、從下到上,每連續(xù)3個(gè)字節(jié)便描述圖像一個(gè)像索點(diǎn)的顏 色信息,這三個(gè)字節(jié)分別代表藍(lán)、綠、紅三基色在此像素中的亮度,若某連續(xù)三個(gè)字節(jié)為:00h, ooh, ffh,則表示該像素的顏色為純紅色。以下我們?cè)敿?xì)討論位圖文件的具體結(jié)構(gòu)。br> 2. 4
15、.1位圖文件的標(biāo)頭標(biāo)頭包倉(cāng)位圖文件的類型大小信息和版面信息。結(jié)構(gòu)如下2:typedef struct tagbitmapfileheader uint bftype;dword bfsize;uint bfreserved1;uint bfreserved2;dword bfoffbits;bitmapfileheader;下面是對(duì)這個(gè)清單屮的代碼元素的說(shuō)明:bftype:指定文件類型,其值始終為bm。bfsize:指定整個(gè)文件的人小(以字節(jié)為單位)。bfreservedl:保留般為 0。bfreserved2:保留- 一,般為 0。bfoffbits:指定從bitmapfilelleader
16、到圖像首部的字節(jié)偏移量?,F(xiàn)在我們已經(jīng)知道位圖標(biāo)頭的川途就是標(biāo)識(shí)位圖文件。讀取位圖文件的每個(gè)程序都使川位圖 標(biāo)頭來(lái)進(jìn)行文件驗(yàn)證。2. 4. 2位圖信息標(biāo)頭隨后的標(biāo)頭稱為信息標(biāo)頭,其中包含圖像木身的屬性。下面說(shuō)明如何指定windows 3. 0 (或 更高版木)設(shè)備獨(dú)立位圖(dib)的大小和顏色格式:typedef struct tagbitmapinfoheader dword bisize; /bi top infoheader 結(jié)構(gòu)所需的字節(jié)數(shù)long biwidth; 位圖的寬度(以象素為單位)long biheight; 位圖的高度(以彖素為單位)word biplanes; /目標(biāo)設(shè)備
17、的位面數(shù)。這個(gè)成員變量的值必須為1word bibitcount; 每個(gè)彖素的位數(shù)。其值必須為1、4、8或24dword bicompression; /丿衣縮位圖的爪縮類型。在24位格式中,該變量被設(shè)置為0dword bisizeimage; /圖像字肖大小。如果位圖的格式是bi_rgb,則將此成員變量設(shè)置為 0是有效的long bixpelspermeter;/為位圖指定目標(biāo)設(shè)備水平分辨率(以彖素/米為單位)。程序町用該值從最符合當(dāng)前設(shè)備 特征的資源群組中選擇一個(gè)位圖long biypelspermeter; /為位圖指定h標(biāo)設(shè)備的垂肓分辨率(以象素/米為單位)dword biclruse
18、d;/指定位圖實(shí)際所用的顏色表中的顏色索引數(shù)。如果bibitcount設(shè)為24,則biclrused指 定用來(lái)優(yōu)化windows調(diào)色板性能的參考顏色表dword biclrimportant; 指定對(duì)位圖的顯示有重要影響的顏色索引數(shù)。如果此值為0,則 所有顏色都很重要 bitmapinfoheader;現(xiàn)在已定義了創(chuàng)建圖像所需的全部信息。2. 4. 3圖像數(shù)據(jù)在24位格式中,圖像中的每個(gè)彖素都山存儲(chǔ)為三字節(jié)的rgb序列表示。每個(gè)掃描行都被補(bǔ) 足到4位。圖像是自底而上存儲(chǔ)的,即笫一個(gè)掃描行是圖像中的最后一個(gè)掃描行。下圖顯示了位 圖文件的標(biāo)頭(bitmapheader)和位圖信息標(biāo)頭(bitmap
19、infoheader)以及部分圖像數(shù)據(jù):圖4位圖文件局部示例2. 5基于彩色靜止數(shù)字圖像的信息隱藏算法在分析了信息隱藏算法的基木框架和彩色圖像的bmp文件格式后,本文提出一種基于彩色靜 止數(shù)字圖像的信息隱藏算法,分別如圖5和圖6所示。算法4.1 (基丁彩色靜止數(shù)字圖像的信息隱藏恢入算法)1)將待隱藏信息(以下稱簽字信號(hào))的字節(jié)長(zhǎng)度寫入b1p文件標(biāo)頭部分的保留字節(jié)屮;2)將簽字信號(hào)轉(zhuǎn)化為二進(jìn)制數(shù)據(jù)碼流;3)將bhp文件圖像數(shù)據(jù)部分的每個(gè)字節(jié)的髙7位依次異或后再與上述二進(jìn)制數(shù)碼流異或后 的結(jié)果寫入最低位;s7$6s5s4s3s2s1s0簽字信號(hào)流位圖數(shù)據(jù)流圖5基丁彩色靜止數(shù)字圖像的信息隱藏嵌入過(guò)程
20、算法4. 2 (基于彩色靜止數(shù)字圖像的信息隱藏提取算法)1)讀bmp文件標(biāo)頭部分的保留字節(jié)值,設(shè)為l,若為0則沒(méi)有隱藏信息,終止算法;若不 為0則其值為隱藏信息的字節(jié)長(zhǎng)度;2)將bmp文件圖像數(shù)據(jù)部分的每個(gè)字節(jié)8位依次異或,并保存其結(jié)果;3)重復(fù)第(2)步,使每8個(gè)bmp文件圖像數(shù)據(jù)部分字節(jié)經(jīng)過(guò)運(yùn)算后組成一個(gè)隱藏信息字節(jié);4)重復(fù)(2)、(3)直到隱藏信息字節(jié)長(zhǎng)度為1“位圖墩據(jù)流簽字信號(hào)硫x7 x6 x5 x4 x3 x2 xi x0圖6基于彩色靜止數(shù)字圖像的信息隱藏提取過(guò)程可以證明,提取后的信息就是嵌入的簽字信號(hào)。以簽字信號(hào)的一個(gè)位s為例,設(shè)對(duì)應(yīng)的一個(gè) 位圖數(shù)據(jù)字節(jié)為x7x6x5x4x3x2
21、x1x0,隕入簽字信號(hào)后的位圖數(shù)據(jù)字節(jié)為x7x6x5x4x3x2x1x0',其 中:x0' = x7 © x6 © x5 © x4 © x3 ® x2 © xi © s設(shè)提取后的簽字信號(hào)為s',則,s' =x7 ® x6 ® x5 ® x4 ® x3 © x2 xi © x0j= (x7®x6®x5®x4 ®x3©x2®x1 x7) © (x6 © x5
22、© x4 © x3 ® x2 © xi ©s)=(x7 © x6 ® x5 © x4 © x3 © x2 ® x1 ® x7) © (x6 © x5 © x4 © x3 ® x2 © xi)=s證畢。3. 算法實(shí)現(xiàn)1、hideinfo. cpp:/*l. bmp 文件頭bmp文件頭數(shù)據(jù)結(jié)構(gòu)含有bmp文件的類型、文件人小和位圖起始位置等信息。其結(jié)構(gòu)定義如下:*/typedef struct tagbi tmapfi1
23、eheaderbyte bftype2; /位圖文件的類型,必須為"bm"byte bfsize4; /位圖文件的大小,以字節(jié)為單位byte bfreservedl2; /位圖文件保留字,必須為0byte bfreserved22; /位圖文件保留字,必須為0bytebfoffbitsm; /位圖數(shù)據(jù)的起始位置,以和對(duì)于位圖文件頭的偏移量衣示,以字節(jié)為單 位 *bitmap; /該結(jié)構(gòu)占據(jù)14個(gè)字節(jié)。/*功能:返回圖像的長(zhǎng)度*/int getvalue(byte*a, int num)int result = 0;for (int i 二 num-1;i>0;i)re
24、sult+=ai;result = result<<8;result+=a0;return result;/*功能:將信息隱藏到圖片中*/void hidelnfoofile* fp;char datamax;char pathmax;bitoperate operate;string pathl ="請(qǐng)輸入圖片路徑(如:c:picsl. bmp) ”;cout « pathl « endl;char temp3100;cin. getline (temp3, 100, ' n');cin. getline(path, sizeof (
25、path), ' n');if(fp = fopen(path, "r+")=null)cout<打開(kāi)文件的時(shí)候出現(xiàn)錯(cuò)誤! <return;bitmap map = /存放文件頭信息;(bitmap)malloc(sizeof(struct tagbitmapfileheader );fread(map, sizeof(struct t agb i t mapf i1el leader ),1,fp);printf (z,請(qǐng)輸入您要隱藏的信息:n");ciru getline(data, max, ' n');int d
26、atalength = strlen(data);int maplength = getvalue(map->bfsize, 4);int databegin = getvalue(map->bfoffbits, 4);if(datalength*8)>(maplength-databegin)printf r隱藏信息太長(zhǎng)!請(qǐng)選擇一個(gè)更大的圖片或者將信息分塊隱藏n); return;/首先將文件的長(zhǎng)度隱藏起來(lái);byte temp32;fseek(fp, databegin, seek_set) ;/定位到數(shù)據(jù)塊的起點(diǎn);fread(temp, sizeof(char)*32,
27、1, fp);int copy = data!ength;for(int i = 31;i>=0;i-)bool v = (bool)(copy%2);tempi = operatebitset(tempi, 1, v);copy = copy/2;fseek(fp, databegin, seek_set) ; /定位到數(shù)據(jù)塊的起點(diǎn);fwrite(temp, sizeof (byte)*32, 1, fp);/以下將數(shù)據(jù)信息隱藏到圖像中;int times = 0;byte ch8;while (times/加上隱藏的文件長(zhǎng)度信息;fseek(fp, databegin+32+time
28、s*& seek_set) ;/立位到數(shù)據(jù)塊的起點(diǎn);fread (ch, sizeof (byte), 8, fp) ; /讀出8個(gè)字節(jié);for(int i = 7;i>=0;i)chi = operate. bitset (chi, 1, operate. bitat (datatimes, 8i);fseek(fp, databegin+32+times*& seek_set); 定位到數(shù)據(jù)塊的起點(diǎn); fwrite(ch, sizeof (byte), 8, fp); 寫入8個(gè)字節(jié);times+;fclose(fp);cout « "隱藏成功,按任
29、意鍵退出" endl;/*將圖片中隱藏的信息提取出來(lái)*/void getlnfo ()file* fp;byte datamax;bitoperate operate;char pathmax;cout « "請(qǐng)輸入圖片路徑(如:c: picsl. bmp) " « endl;char temp3100;cin. getline(temp3, 100, ' n');cin. getline(path, sizeof (path), ' n');if(fp = fopen(path, "r+")
30、=null) cout<打開(kāi)文件的時(shí)候出現(xiàn)錯(cuò)誤! <return;bitmap map = 存放文件頭信息;(bitmap)malloc(sizeof(struct tagbitmapfileheader );fread(map, sizeof(struct tagbitmapfi1eheader ),1,fp);int databegin = getvalue (map->bfoffbits, 4); /得到數(shù)據(jù)塊開(kāi)始的偏移地址;獲取文件的長(zhǎng)度;int datalength = 0;首先將隱藏文件的長(zhǎng)度讀出來(lái);byte temp32;fseek(fp, databegin,
31、 seek_set); 定位到數(shù)據(jù)塊的起點(diǎn); fread(temp, sizeof (char)*32, 1, fp);for(int i = 0;i<31;i+)datalength += (int)operate. bitat(tempi, 1);datalength = dataleng th«l;datalength += (int)operate. bitat(temp31, 1); /printf (z,nndatalength = %dn,?, datalength);int times = 0;byte ch8;while(times/加上隱藏的文件長(zhǎng)度信息;f
32、seek(fp, databegin+32+times*8, seek_set);fread (ch, sizeof (byte),& fp) ; /讀出8個(gè)字節(jié);/printf (z/nch = %sn", ch);datatimes = 0;for(int i = 0;i7;i+)datatimes+二(int)operate. bitat(chi, 1); datatimes = datatimes*2;datatimes+二(int)operate. bitat(ch7, 1);printf (z/%cz/, data times);times+;fclose(fp)
33、;2、bitoperate. cpp/*功能:把ch從右數(shù)的第position位設(shè)置為value; */byte bitoperate:bitset(byte ch, short position, bool value)byte temp = ch;if(position>8|position<l)cout<<z/0ut of bound! position must be a number between 18 "<return ch;bool bit = bitat(temp, position);if (bivalue)/如果不相同的話if(bit = 0)byte m = (byte)value;for(int i = 1;im = m<<l;ch+=m;return ch;elsebyte m = (byte)bit;for(int i = 1;im = m<&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 飛行器制造綜合課程設(shè)計(jì)
- 2025年個(gè)人股份轉(zhuǎn)讓及后續(xù)服務(wù)合同協(xié)議書4篇
- 二零二五年度民間借貸授權(quán)委托法律事務(wù)專項(xiàng)合同4篇
- 專項(xiàng)施工方案審批
- 年度家用制冷電器具競(jìng)爭(zhēng)策略分析報(bào)告
- 2025年度綜合開(kāi)發(fā)項(xiàng)目代建合同標(biāo)準(zhǔn)文本4篇
- 2024年心理咨詢師題庫(kù)附參考答案(達(dá)標(biāo)題)
- 2025年水電工程自動(dòng)化控制系統(tǒng)安裝合同4篇
- 二零二五版苗圃技術(shù)員智慧苗圃建設(shè)與運(yùn)營(yíng)管理合同4篇
- 環(huán)氧防滑坡道施工方案
- 中外美術(shù)史試題及答案
- 工會(huì)換屆公示文件模板
- 江蘇省南京市協(xié)同體七校2024-2025學(xué)年高三上學(xué)期期中聯(lián)合考試英語(yǔ)試題答案
- 青島版二年級(jí)下冊(cè)三位數(shù)加減三位數(shù)豎式計(jì)算題200道及答案
- GB/T 12723-2024單位產(chǎn)品能源消耗限額編制通則
- GB/T 16288-2024塑料制品的標(biāo)志
- 麻風(fēng)病防治知識(shí)課件
- 干部職級(jí)晉升積分制管理辦法
- TSG ZF003-2011《爆破片裝置安全技術(shù)監(jiān)察規(guī)程》
- 2024年代理記賬工作總結(jié)6篇
- 電氣工程預(yù)算實(shí)例:清單與計(jì)價(jià)樣本
評(píng)論
0/150
提交評(píng)論