嵌入信息的方法是:首先將待隱藏的秘密信息轉換成二進制數據流;然後,將BMP文件的圖像數據部分中每個字節的最低位替換為要隱藏的信息位。最後,復制其他不再需要隱藏信息的原始數據。從位圖文件分析得知,系統預留了偏移量為0x06的四個字節,可以在這個位置寫入隱藏文件的大小,這樣在提取信息時可以提前知道有用信息的長度,提高解碼效率。對於文件頭中的另外50個字節,就照原樣復制。隱藏過程如圖1所示。
圖1。LSB圖像隱藏算法示意圖
圖1 LSB數據隱藏算法
信息提取是從載體圖像中讀取隱藏的信息,其過程和步驟正好與信息嵌入相反。首先,讀取隱藏信息後的圖像文件的0x06處的隱藏信息的字節數;然後從0x36開始,計算BMP文件圖像數據部分每個字節的最低位,每8個字節就夠了,輸出的8位二進制數組成壹個字節。經過上述處理,得到壹系列8位二進制數,這就是隱藏信息的代碼。代碼轉換成文本、圖像或聲音,就是隱藏的信息。提取過程如圖2所示。
由於原來的24位BMP圖像文件隱藏了信息,其數據部分的字節值最多變為1,而這個字節所代表的像素顏色值最多只變為1/256,所以有隱藏信息的BMP圖像和沒有隱藏信息的BMP圖像肉眼是無法區分的。將信息直接嵌入到像素的RGB值中的優點在於,嵌入信息的容量與所選封面圖像的大小成正比。使用這種方法,壹個大小為32k的24位BMP圖像文件可以隱藏大約32k/8=4k的信息(忽略文件頭無法隱藏54字節的數據),這種方法具有很高的信息隱藏率。
圖二。LSB圖像提取算法示意圖
圖2 LSB數據提取算法
由於算法通過調整原始數據的最低位來隱藏信息,普通用戶很難從視覺和聽覺上感知隱藏的信息。但作為壹種數字水印算法,由於其基本原理,隱藏的數字水印信息極其脆弱,經不起壹些無損和有損的信號處理。
3新的數字水印算法
該技術的改進是在LSB圖像隱藏技術的基礎上,隱藏待重復隱藏的水印信息。由於圖片中充滿了水印信息,具有很強的抗裁剪能力。
對載體圖像進行切割後,極有可能破壞水印信息的原始位置,使我們無法定位水印信息並提取出來。因此,該算法的關鍵是如何同步水印信息。接下來,提出壹種同步方法:
(1)在數字水印信息前多次寫入同步信號0000,111,111,然後四次以上寫入預標識符1。
(2)讀取剪切後的載體圖像的信息位,如果第壹位為0則跳過,從非零位開始讀取,連續讀取8位,判斷數據是否為同步字FF;如果不是同步字FF,從非零位開始連續讀取接下來的8位,直到連續讀取兩組同步字FF,證明已經達到同步,然後讀取數據,直到預讀標識符指示是隱藏信息位,讀取數據直到讀取標識符指示是隱藏的。如圖3所示,無論從第1個同步字的任何壹位讀取,都可以保證第三個同步字已經完成了同步操作,第四個同步字已經完成了同步確認,等待前壹個標識符的到來。