图像解密问题
我用混沌序列对图像加密,但加密后的图片按照加密的方法怎么解密不了那。。。。。。。。。我只是对图像的像素进行了替换 呀
换不回来了??????
帮忙解决下 不胜感激
回复 楼主 55884255 的帖子
请再详细的说明你的问题,方便的话附上程序。图像解密!!!!!!!!!!!!!!!!!谢谢了
就是用matlab加密成图片,然后在载入生成的加密图片进行解密,无法得到原来的明文我将259*256的lona.bmp进行加密,对其进行4*4分块,通过混沌序列的0,1来判断像素位置置换与否
加密程序:
=ode45(@odel,,);
C=x(1:701,3);
C=C/10; C=mod(C,1);
for p=1:700;
F3(1)=C(1);
F3(p+1)=F3(p)+C(p+1);
end
Q3=F3(701)/700;
for c=1:700;
if C(c)>Q3
C1(c,:)=0;
else C1(c,:)=1;
end
C1=uint8(C1);
end
I=imread('LONA.bmp');
I=rgb2gray(I);
imshow(I);
Z=mat2cell(I,4*ones(1,64),4*ones(1,64));
for r=1:64;s=1:64;
if C1(r,:)==1
V=Z(r,s);
Z(r,s)=Z(s,r);
Z(s,r)=V;
end
end
for r=1:64;s=1:64;
if C1(r+51,:)==1
V=Z(r,s);
Z(r,s)=Z(s,r);
Z(s,r)=V;
end
end
for r=1:64;s=1:64;
if C1(r+81,:)==1
V=Z(r,s);
Z(r,s)=Z(s,r);
Z(s,r)=V;
end
end
for r=1:64;s=1:64;
if C1(r+101,:)==1
V=Z(r,s);
Z(r,s)=Z(s,r);
Z(s,r)=V;
end
end
for r=1:64;s=1:64;
if C1(r+256,:)==1
V=Z(r,s);
Z(r,s)=Z(s,r);
Z(s,r)=V;
end
end
I=cell2mat(Z);
figure,imshow(I);
将加密后的图片保存为un.pgm
解密程序:
=ode45(@odel,,);
C=x(1:701,3);
C=C/10; C=mod(C,1);
for p=1:700;
F3(1)=C(1);
F3(p+1)=F3(p)+C(p+1);
end
Q3=F3(701)/700;
for c=1:700;
if C(c)>Q3
C1(c,:)=0;
else C1(c,:)=1;
end
C1=uint8(C1);
end
I=imread('un.pgm');
imshow(I);
Z=mat2cell(I,4*ones(1,64),4*ones(1,64));
for r=1:64;s=1:64;
if C1(r,:)==1
V=Z(r,s);
Z(r,s)=Z(s,r);
Z(s,r)=V;
end
end
for r=1:64;s=1:64;
if C1(r+51,:)==1
V=Z(r,s);
Z(r,s)=Z(s,r);
Z(s,r)=V;
end
end
for r=1:64;s=1:64;
if C1(r+81,:)==1
V=Z(r,s);
Z(r,s)=Z(s,r);
Z(s,r)=V;
end
end
for r=1:64;s=1:64;
if C1(r+101,:)==1
V=Z(r,s);
Z(r,s)=Z(s,r);
Z(s,r)=V;
end
end
for r=1:64;s=1:64;
if C1(r+256,:)==1
V=Z(r,s);
Z(r,s)=Z(s,r);
Z(s,r)=V;
end
end
I=cell2mat(Z);
figure,imshow(I);
回复 板凳 55884255 的帖子
光有程序没有逻辑过程, 可能很难短时间看懂LZ的程序!解密啊555555555
我想不是主程序的问题应该是图片格式的存储和读取问题
MATLAB输出的加密图形格式是不是变了
如果我在一个程序文件中进行加解密的话就能成功
但是在两个程序文件中就不行(即在对图片加密后输出加密图片,保存后 , 在解密程序中调用该加密图片进行解密处理就解不出来
为什么呀?????????
回复 5楼 55884255 的帖子
可能是因为保存的时候,有些图片格式被matlab添加或者更改了内容吧。试试bmp格式。
页:
[1]