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