55884255 发表于 2009-2-11 10:12

图像解密问题

我用混沌序列对图像加密,但加密后的图片按照加密的方法怎么解密不了那。。。。。。。。。
我只是对图像的像素进行了替换 呀
换不回来了??????
帮忙解决下 不胜感激

sogooda 发表于 2009-2-11 11:45

回复 楼主 55884255 的帖子

请再详细的说明你的问题,方便的话附上程序。

55884255 发表于 2009-2-11 15:46

图像解密!!!!!!!!!!!!!!!!!谢谢了

就是用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);

ChaChing 发表于 2009-2-11 16:50

回复 板凳 55884255 的帖子

光有程序没有逻辑过程, 可能很难短时间看懂LZ的程序!

55884255 发表于 2009-2-11 17:37

解密啊555555555

我想不是主程序的问题
应该是图片格式的存储和读取问题
MATLAB输出的加密图形格式是不是变了

如果我在一个程序文件中进行加解密的话就能成功
但是在两个程序文件中就不行(即在对图片加密后输出加密图片,保存后 , 在解密程序中调用该加密图片进行解密处理就解不出来
为什么呀?????????

sogooda 发表于 2009-2-11 20:31

回复 5楼 55884255 的帖子

可能是因为保存的时候,有些图片格式被matlab添加或者更改了内容吧。
试试bmp格式。
页: [1]
查看完整版本: 图像解密问题