LSB算法的基本原理是:對空域的LSB做替換,,用來替換LSB的序列就是需要加入的水印信息,、水印的數(shù)字摘要或者由水印生成的偽隨機(jī)序列。由于水印信息嵌入的位置是LSB,,為了滿足水印的不可見性,,允許嵌入的水印強(qiáng)度不可能太高。然而針對空域的各種處理,,如游程編碼前的預(yù)處理,,會對不顯著分量進(jìn)行一定的壓縮,所以LSB算法對這些操作很敏感,。因此LSB算法最初是用于脆弱性水印的,。
文獻(xiàn)[1]提出了第1個水印模型,它把N×M大小的原始圖像Z分解為n個8×8塊Zi(1≤i≤n),,把Zi的LSB部分置零,,對各個塊做數(shù)字摘要。同時把作為水印的logo圖像A變換為N×M,,進(jìn)行同樣的分塊,,數(shù)字摘要和Ai對應(yīng)異或,得到嵌入水印的數(shù)字摘要,。然后對它用私鑰加密,,結(jié)果嵌入到相應(yīng)塊的LSB部分。檢驗過程要用到A,,并且用戶得到的圖像有任何的改變,,水印都不可能檢測出來。
由于聯(lián)合攝影專家組(Joint Photographic Experts Group,,JPEG)是一種常用的圖像壓縮算法,,當(dāng)把這種處理看成是合法時,文獻(xiàn)[2]對LSB算法做了改進(jìn),,提出了抵抗JPEG的半脆弱水印系統(tǒng),。該系統(tǒng)基于公鑰密碼系統(tǒng)和hash函數(shù)特點,能反映彩色圖像在紅色(R),、藍(lán)色(B),、綠色(G)層的哪部分受到攻擊。RGB圖像在B部分對應(yīng)的頻率響應(yīng)最低,,所以把原始圖像分為R,、G、B三部分,,對于R,、G的LSB部分用一個公鑰密碼系統(tǒng)以外的密鑰(簡稱k1)加密,再和原始水印W作XOR運(yùn)算,得到的M用公鑰密碼系統(tǒng)加密,,得到E,。同時把B部分的LSB部分清零。最后,,把E加入到B的LSB部分,。