「lsb隐藏java」LSB图像信息隐藏

博主:adminadmin 2022-11-24 21:48:06 52

今天给各位分享lsb隐藏java的知识,其中也会对LSB图像信息隐藏进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java中如何将一个信息储存到一个图片中呢?

1、你应该是将某些数据隐藏在图片中,外面又看不到,只有对图片特殊解析后才会看到的意思。

2、一般的图片想这样做到是不行的,但是可以向图片中加入水印、文字等可视化的信息。

3、特殊图片,二维码就是你的需求的典型实现。它是将数据信息放在黑白交错的二维矩阵中,存储的信息量也是可大可小。

好好再查下吧。

什么是LSB算法?

LSB(LeastSignificant Bits)算法:将秘密信息嵌入到载体图像像素值的最低有效位,也称最不显著位,改变这一位置对载体图像的品质影响最小。

基本原理:

对空域的LSB做替换,用来替换LSB的序列就是需要加入的水印信息、水印的数字摘要或者由水印生成的伪随机序列。由于水印信息嵌入的位置是LSB,为了满足水印的不可见性,允许嵌入的水印强度不可能太高。然而针对空域的各种处理,如游程编码前的预处理,会对不显著分量进行一定的压缩,所以LSB算法对这些操作很敏感。因此LSB算法最初是用于脆弱性水印的。

LSB算法基本步骤: 

1.将得到的隐藏有秘密信息的十进制像素值转换为二进制数据; 

2.用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位; 

3.将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的图像。

%信息嵌入

Picture=imread(‘c:\\test.tif’);  

%读入载体图像 

Double_Picture=Picture; 

Double_Picture=double(Double_Picture); 

%将图像转换为二进制

‘c:\\test.txt’_id=fopen(‘c:\\test.txt’,'r');  

%读取秘密信息文件 

[msg,len]=fread(‘c:\\test.txt’_id,'ubit1'); 

[m,n]=size(Double_Picture); 

p=1;  

%p 为秘密信息的位计数器 

for f2=1:n 

for f1=1:m 

Double_Picture(f1,f2)=Double_Picture(f1,f2)-mod(Double_ 

Picture(f1,f2),2)+msg(p,1); 

%将秘密信息按位隐藏入连续的像素中 

if p==len 

break; 

end 

p=p+1; 

end 

if p==len 

break; 

end 

end 

Double_Picture=uint8(Double_Picture); 

imwrite(Double_Picture,‘c:\\result.tif’);  

%生成秘密信息 

subplot(121);imshow(Picture);title('未嵌入信息的图片'); 

subplot(122);imshow(Double_Picture);title('嵌入信息的图片');

 

%信息提取 

Picture=imread(‘c:\\result.tif’);  

%读入隐秘信息的图像

 Picture=double(Picture); 

[m,n]=size(Picture); 

frr=fopen(‘c:\\result.txt’,'a'); 

len=8; 

%设定隐秘信息长度 

p=1; 

for f2=1:n 

for f1=1:m 

if bitand(Picture(f1,f2),1)==1 

%顺序提取图像相应像素LSB 的秘密信息 

fwrite(frr,1,'bit1'); 

result(p,1)=1; 

else 

fwrite(frr,0,'bit1'); 

result(p,1)=0; 

end 

if p==len  

%判断秘密信息是否读完 

break; 

end 

p=p+1; 

end 

if p==len 

break; 

end 

end 

fclose(frr);

关于图片LSB隐写

LSB隐写

LSB隐写原理就是图片中的像素一般是由三种颜色组成,即三原色(红绿蓝),由这三种原色可以组成其他各种颜色,在png图片的存储中,每个颜色占有8bit,即有256种颜色,一共包含256的三次方颜色,即16777216中颜色,人类的眼睛可以区分约1,000万种不同的颜色,剩下无法区分的颜色就有6777216。LSB隐写就是修改了像素中的最低位,把一些信息隐藏起来。png图片是一种无损压缩,也只有在无损压缩或无压缩的图片(bmp图片是一种无压缩)上实现LSB隐写,如果是jpg图片,就没办法使用lsb隐写了。

因为人眼的视觉冗余,对图片中某点的像素发生上述改变时几乎是察觉不到的。

一幅完整的图像,包含三个通道(红绿蓝)缺一不可,如果关闭了红色通道,图像就偏青色,如果关闭了绿色通道,图像就偏洋红色,如果关闭了蓝色通道,图像就偏黄色。

from Crypto.Cipher import AES

import base64

aes_instance =AES.new(b'weigongcun'.ljust(16, b'\0'), AES.MODE_ECB)

cipher=base64.b64decode('7SsQWmZ524i/yVWoMeAIJA==')

plaintext = aes_instance.decrypt(cipher)

print(plaintext)

LSB信息隐藏C语言代码问题

for(j=64;j(64+i*8);j++) //为什么是从64开始??????

这个我猜是因为位图文件头包含一些很重要的信息,为避免修改而跳过这段内存;

第二个问题是a[j]=a[j]1; //逐位获取文字的二进制代码 这句话怎么理解?

for(k=0;k8;k++){ }这个循环体内是对文字每个字节的8bit信息逐位读出。

t=a[j]0x01; 这一句是读出8个bit的最低位。

a[j]=a[j]1; //这句是读完之后右移一位,高位清零,低位的第二bit移到第一bit,继续循环读取下一位。循环8次以完成从低到高的8bit的读取。

通过j*k次循环,先将文字转换成二进制数据,然后一位一位的存储在图像的LSB中。

LSB水印算法比较简单的一种算法,极易被各种图形处理破坏,属于易损水印。

关于lsb隐藏java和LSB图像信息隐藏的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-24,除非注明,否则均为首码项目网原创文章,转载请注明出处。