当前位置:首页 » 操作系统 » 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艇西格玛密码机那样。有了对方的密码机就可以轻易破解对方密码了

热点内容
随机启动脚本 发布:2025-07-05 16:10:30 浏览:535
微博数据库设计 发布:2025-07-05 15:30:55 浏览:31
linux485 发布:2025-07-05 14:38:28 浏览:310
php用的软件 发布:2025-07-05 14:06:22 浏览:760
没有权限访问计算机 发布:2025-07-05 13:29:11 浏览:437
javaweb开发教程视频教程 发布:2025-07-05 13:24:41 浏览:734
康师傅控流脚本破解 发布:2025-07-05 13:17:27 浏览:249
java的开发流程 发布:2025-07-05 12:45:11 浏览:696
怎么看内存卡配置 发布:2025-07-05 12:29:19 浏览:288
访问学者英文个人简历 发布:2025-07-05 12:29:17 浏览:837