當前位置:首頁 » 操作系統 » wlsb演算法

wlsb演算法

發布時間: 2023-01-23 22:01:07

㈠ 圖像水印的LSB演算法,VC++代碼

因為8位像素值的最低位為1或0對整個像素值影響不大,LSB就是把水印信息放入這個最低位,同時保證原始圖像基本無變化

void CDib::Embed()//嵌入
{
unsigned char bmdata;//BMP圖像數據
unsigned char efdata;//嵌入的文件數據
int t = 7;
int x[8];
int s[8];
int last_bit; //記錄位元組最低位本來的bit

for(UINT i1 = 0, i2 = 0; i1 <= bitmap_size - 1, i2 <= embfile_size - 1; i1++)
{ //生產隱藏信息,並逐步嵌入到宿主圖像各像素的最低位上
bmdata = *p;//p指向圖像數據的每個像素,把當前像素值給bmdata

for (int j = 0; j <= 7; j++) //計算各bit位
{
x[j] = bmdata & 1;//提出bmdata最低位放入x[j]
bmdata >>= 1;//右移一位
}

last_bit = x[0];//原始圖像的最低位值存入last_bit中
x[0] = x[1] ^ x[2] ^ x[3] ^ x[4] ^ x[5] ^ x[6] ^ x[7];//使最低位值等於其他各位的異或

if (t == 7) //宿主圖片每走過八個位元組,計算一次s[]
{
efdata = *q;//q指向插入的水印數據
for (j = 0; j <= 7; j++)
{
s[j] = efdata & 1;//水印數據依次放入s[j]中
efdata >>= 1;//右移
}
}
x[0] ^= s[t];//隱藏信息,隱藏信息等於原圖像高六位的異或再和文件數據異或
if (last_bit == 0) //嵌入隱藏信息
{
*p |= x[0];//如果該像素原本最低位為0;則將最終得到的異或水印值放入原像素
}
else
{
*p &= 254 + x[0]; //如果該像素原本最低位為1;則將最終得到的異或水印值放入原像素
}

p++;//指向下一個像素
t--;//t用來定時每8個位元組插入一次完整的s
if (t == -1) //需要計算一次s[]
{
t = 7;
q++;//指向下一個作為待插入水印的文件數據
i2++;
}
}

}

void CDib::Pick()//提取
{
m_pFile = new unsigned char [embfile_size];//開辟等於插入文件數據大小的內存
unsigned char *q = m_pFile;//q指向該內存

unsigned char bmdata;//插入了水印的BMP圖像數據

int x[8];
int s[8];
int t = 7;
for (UINT i1 = 0, i2 = 0; i1 <= bitmap_size - 1, i2 <= embfile_size - 1; i1++)
{
bmdata = *p; //p指向插入了水印的圖像數據
for (int j = 0; j <= 7; j++) //計算各bit位
{
x[j] = bmdata & 1;//提取該圖像位元組的0~7位放入X[]數組
bmdata >>= 1;
}
s[t] = x[0] ^ x[1] ^ x[2] ^ x[3] ^ x[4] ^ x[5] ^ x[6] ^ x[7];//提取1~8個位元組中的s[]
t--;
if (t == -1) //s[7]到s[0]組成一個位元組
{
*q = s[7] * 128 + s[6] * 64 + s[5] * 32 + s[4] * 16 +
s[3] * 8 + s[2] * 4 + s[1] * 2 + s[0];//還原原始的圖像數據
t = 7;
i2++;
q++;
}
p++;//指向下一像素
}

}

㈡ 什麼是LSB演算法

您好,LBS演算法是將秘密信息嵌入到載體圖像像素值的最低有效位,也稱最不顯著位,改變這一位置對載體圖像的品質影響最小的演算法。LSB演算法的基本原理: 對空域的LSB做替換,用來替換LSB的序列就是需要加入的水印信息、水印的數字摘要或者由水印生成的偽隨機序列。由於水印信息嵌入的位置是LSB,為了滿足水印的不可見性,允許嵌入的水印強度不可能太高。然而針對空域的各種處理,如遊程編碼前的預處理,會對不顯著分量進行一定的壓縮,所以LSB演算法對這些操作很敏感。因此LSB演算法最初是用於脆弱性水印的。 LSB演算法基本步驟: 1 將得到的隱藏有秘密信息的十進制像素值轉換為二進制數據; 2 用二進制秘密信息中的每一比特信息替換與之相對應的載體數據的最低有效位; 3 將得到的含秘密信息的二進制數據轉換為十進制像素值,從而獲得含秘密信息的圖像。 獵人安全網為您解答

㈢ LSB演算法的原理是什麼

LSB演算法
首先 將得到的隱藏有秘密信息的十進制像素值轉換為二進制數據;
然後 用二進制秘密信息中的每一比特信息替換與之相對應的載體數據的最低有效位;
最後 將得到的含秘密信息的二進制數據轉換為十進制像素值,從而獲得含秘密信息的圖像。

㈣ LSB演算法有何優缺點

你中南信安的吧。加分。我給你發實驗報告,給20分最好了,這是我的新ID,沒財富。

綜上所述,LSB有如下缺點:
1) 嵌入消息較大時,所花時間較長。
2) 只能處理簡單的流格式的文件。
3) 為了滿足水印的不可見性,允許嵌入的水印強度較低,對空域的各種操作較為敏感。
4) 基本的LSB演算法抗JPEG壓縮能力弱。
5) 魯棒性差。
LSB演算法有如下優點:
1) 演算法簡單,易於實現,計算速度也快。
2) 在基礎演算法上能夠很快的進行改進,並在脆弱性水印中應用廣泛。
3) 由於能在最低有效位(一般是最後兩位)進行嵌入,故對於256色(8位)的RGB圖像,在3層圖像中均可插入1/8到1/4的消息,總的來說,容量還是足夠大的。

㈤ LSB信息隱藏C語言代碼問題

>for(j=64;j<(64+i*8);j++) //為什麼是從64開始??????

這個我猜是因為點陣圖文件頭包含一些很重要的信息,為避免修改而跳過這段內存;

>第二個問題是a[j]=a[j]>>1; //逐位獲取文字的二進制代碼 這句話怎麼理解?

for(k=0;k<8;k++){ }這個循環體內是對文字每個位元組的8bit信息逐位讀出。

t=a[j]&0x01; 這一句是讀出8個bit的最低位。

a[j]=a[j]>>1; //這句是讀完之後右移一位,高位清零,低位的第二bit移到第一bit,繼續循環讀取下一位。循環8次以完成從低到高的8bit的讀取。

通過j*k次循環,先將文字轉換成二進制數據,然後一位一位的存儲在圖像的LSB中。

LSB水印演算法比較簡單的一種演算法,極易被各種圖形處理破壞,屬於易損水印。

㈥ 二戰時密碼原理

二戰時都用密碼機的。發報方用密碼機加密,收報方用密碼機解密

加密的話是由密碼機完成的,過程極為復雜,可以是改變字母順序,比方B變成A,C變成B(這還是最簡單的),也可以是改變字母排列,比方講ABC變成CAB。。。

總之,在經過極為復雜的加密後,收報方由於使用的是同樣型號的密碼機,加密方法都是一樣的,所以可以很輕易的將加密的信息解碼。

至於破解的話只能是猜,沒其他辦法,要不就是竊取對方的密碼機,就像英國人截獲德軍U艇西格瑪密碼機那樣。有了對方的密碼機就可以輕易破解對方密碼了

熱點內容
linux修改保存文件 發布:2024-05-19 17:30:38 瀏覽:665
網路有你腳本 發布:2024-05-19 17:29:55 瀏覽:769
黎明我的世界伺服器 發布:2024-05-19 17:17:34 瀏覽:538
雷神g50如何設置安卓原生模式 發布:2024-05-19 16:50:04 瀏覽:120
c語言小數四捨五入 發布:2024-05-19 16:23:28 瀏覽:525
資料庫被注入攻擊 發布:2024-05-19 16:21:31 瀏覽:835
微信忘記密碼從哪裡看 發布:2024-05-19 16:06:37 瀏覽:33
寶馬x4貸款買哪個配置好 發布:2024-05-19 15:56:03 瀏覽:23
微控pid演算法 發布:2024-05-19 15:46:31 瀏覽:136
雲盤視頻解壓密碼 發布:2024-05-19 15:23:17 瀏覽:848