LSB信息隐藏C语言代码问题
发布网友
发布时间:2022-05-12 16:13
我来回答
共1个回答
热心网友
时间:2023-10-13 00:25
>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水印算法比较简单的一种算法,极易被各种图形处理破坏,属于易损水印。