混沌异或加密演示
[cpp]
function el2
%应用混沌序列与原始图像的异或对原始图像进行加密
%让图像在不同的窗口显示
%直接使用imwrite保存图像,如果利用生成的图像另存为,无论是fig格式,eps格式
% 或是bmp格式,均存在很大的白边,在word内处理较麻烦。
%修改:20130507
%lilizong@gmail.com
clear;
clc;
%需要注意本程序实现对二进制文件的加密,对于非二进制文件不能采用此程序进行加密!!!!
[filename pathname]=uigetfile('*.bmp;*.tiff;*.tif', '读入图像');
os=[pathname filename];
%os原始图像的路径
o=imread(os);
% figure,imshow(o);
%计算原始图像的大小
[m n]=size(o);
l=zeros(m,n);
l(1)=0.1;
for i=2:m*n
l(i)=1-2*l(i-1)*l(i-1);
end
% %对生成的混沌序列进行排序
% [lsort lindex]=sort(l);
% t=linspace(0,0,m*n);
% t(1)=0.98;
% for i=1:m*n
% t(i+1)=1-2*t(i)*t(i);
% end
for i=1:m*n
if (l(i)>=0)
l(i)=1;
else
l(i)=0;
end
end
% l=~l;
ei=xor(o,l);
di=xor(ei,l);
%%%%%%%%%%%%%%%%%%错误密钥
l2=zeros(m,n);
l2(1)=0.09999999;
for i=2:m*n
l2(i)=1-2*l2(i-1)*l2(i-1);
end
% %对生成的混沌序列进行排序
% [lsort lindex]=sort(l);
% t=linspace(0,0,m*n);
% t(1)=0.98;
% for i=1:m*n
% t(i+1)=1-2*t(i)*t(i);
% end
for i=1:m*n
if (l2(i)>=0)
l2(i)=1;
else
l2(i)=0;
end
end
di2=xor(ei,l2);
%%%%%错误密钥2
l3=zeros(m,n);
l3(1)=0.10000001;
for i=2:m*n
l3(i)=1-2*l3(i-1)*l3(i-1);
end
for i=1:m*n
if (l3(i)>=0)
l3(i)=1;
else
l3(i)=0;
end
end
di3=xor(ei,l3);
% h= waitbar(0,'程序处理中,请耐心等待。。。');
% for i=1:100, % computation here %
% waitbar(i/100)
% end
% close(h)
figure,imshow(o); %原始图像
figure,imshow(l);% 混沌图像
figure,imshow(ei);%加密图像
figure,imshow(di,[]);%解密图像
figure,imshow(di2,[]);%错误解密1
figure,imshow(di3,[]);%错误解密1
%%%取消matlab导出图像的自带白边,此处采用imwrite保存的方式
imwrite(l,'E:\易做图\2012\投稿2\simulator\resultImage\混沌图像imwrite.bmp');
imwrite(ei,'E:\易做图\2012\投稿2\simulator\resultImage\加密图像imwrite.bmp');
imwrite(di,'E:\易做图\2012\投稿2\simulator\resultImage\解密图像imwrite.bmp');
imwrite(di2,'E:\易做图\2012\投稿2\simulator\resultImage\错误解密图像imwrite.bmp');
imwrite(di3,'E:\易做图\2012\投稿2\simulator\resultImage\错误解密图像2imwrite.bmp');
% imwrite(ei,'E:\易做图\2012\投稿2\simulator\resultImage\加密图像imwrite.bmp');
% subplot(2,2,1),imshow(o),title('原始图像');
% subplot(2,2,2),imshow(l),title('混沌图像');
% % figure,imshow(l);
% %ei表示加密图像encryption image
% subplot(2,2,3),imshow(ei),title('加密图像');
% %di表示解密图像dencryption image
% subplot(2,2,4),imshow(di,[]),title('解密图像');
% figure,imshow(di);
function el2
%应用混沌序列与原始图像的异或对原始图像进行加密
%让图像在不同的窗口显示
%直接使用imwrite保存图像,如果利用生成的图像另存为,无论是fig格式,eps格式
% 或是bmp格式,均存在很大的白边,在word内处理较麻烦。
%修改:20130507
%lilizong@gmail.com
clear;
clc;
%需要注意本程序实现对二进制文件的加密,对于非二进制文件不能采用此程序进行加密!!!!
[filename pathname]=uigetfile('*.bmp;*.tiff;*.tif', '读入图像');
os=[pathname filename];
%os原始图像的路径
o=imread(os);
% figure,imshow(o);
%计算原始图像的大小
[m n]=size(o);
l=zeros(m,n);
l(1)=0.1;
for i=2:m*n
l(i)=1-2*l(i-1)*l(i-1);
end
% %对生成的混沌序列进行排序
% [lsort lindex]=sort(l);
% t=linspace(0,0,m*n);
% t(1)=0.98;
% for i=1:m*n
% t(i+1)=1-2*t(i)*t(i);
% end
for i=1:m*n
if (l(i)>=0)
l(i)=1;
else
l(i)=0;
end
end
% l=~l;
ei=xor(o,l);
di=xor(ei,l);
%%%%%%%%%%%%%%%%%%错误密钥
l2=zeros(m,n);
l2(1)=0.09999999;
for i=2:m*n
l2(i)=1-2*l2(i-1)*l2(i-1);
end
% %对生成的混沌序列进行排序
% [lsort lindex]=sort(l);
% t=linspace(0,0,m*n);
% t(1)=0.98;
% for i=1:m*n
% t(i+1)=1-2*t(i)*t(i);
% end
for i=1:m*n
if (l2(i)>=0)
l2(i)=1;
else
l2(i)=0;
end
end
di2=xor(ei,l2);
%%%%%错误密钥2
l3=zeros(m,n);
l3(1)=0.10000001;
for i=2:m*n
l3(i)=1-2*l3(i-1)*l3(i-1);
end
for i=1:m*n
if (l3(i)>=0)
l3(i)=1;
else
l3(i)=0;
end
end
di3=xor(ei,l3);
% h= waitbar(0,'程序处理中,请耐心等待。。。');
% for i=1:100, % computation here %
% waitbar(i/100)
% end
% close(h)
figure,imshow(o); %原始图像
figure,imshow(l);% 混沌图像
figure,imshow(ei);%加密图像
figure,imshow(di,[]);%解密图像
figure,imshow(di2,[]);%错误解密1
figure,imshow(di3,[]);%错误解密1
%%%取消matlab导出图像的自带白边,此处采用imwrite保存的方式
imwrite(l,'E:\易做图\2012\投稿2\simulator\resultImage\混沌图像imwrite.bmp');
imwrite(ei,'E:\易做图\2012\投稿2\simulator\resultImage\加密图像imwrite.bmp');
imwrite(di,'E:\易做图\2012\投稿2\simulator\resultImage\解密图像imwrite.bmp');
imwrite(di2,'E:\易做图\2012\投稿2\simulator\resultImage\错误解密图像imwrite.bmp');
imwrite(di3,'E:\易做图\2012\投稿2\simulator\resultImage\错误解密图像2imwrite.bmp');
% imwrite(ei,'E:\易做图\2012\投稿2\simulator\resultImage\加密图像imwrite.bmp');
% subplot(2,2,1),imshow(o),title('原始图像');
% subplot(2,2,2),imshow(l),title('混沌图像');
% % figure,imshow(l);
% %ei表示加密图像encryption image
% subplot(2,2,3),imshow(ei),title('加密图像');
% %di表示解密图像dencryption image
% subplot(2,2,4),imshow(di,[]),title('解密图像');
% figure,imshow(di);
补充:综合编程 , 安全编程 ,