当前位置:编程学习 > 网站相关 >>

混沌异或加密演示

[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:\paper\2012\投稿2\simulator\resultImage\混沌图像imwrite.bmp'); 
imwrite(ei,'E:\paper\2012\投稿2\simulator\resultImage\加密图像imwrite.bmp'); 
imwrite(di,'E:\paper\2012\投稿2\simulator\resultImage\解密图像imwrite.bmp'); 
imwrite(di2,'E:\paper\2012\投稿2\simulator\resultImage\错误解密图像imwrite.bmp'); 
imwrite(di3,'E:\paper\2012\投稿2\simulator\resultImage\错误解密图像2imwrite.bmp'); 
% imwrite(ei,'E:\paper\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:\paper\2012\投稿2\simulator\resultImage\混沌图像imwrite.bmp');
imwrite(ei,'E:\paper\2012\投稿2\simulator\resultImage\加密图像imwrite.bmp');
imwrite(di,'E:\paper\2012\投稿2\simulator\resultImage\解密图像imwrite.bmp');
imwrite(di2,'E:\paper\2012\投稿2\simulator\resultImage\错误解密图像imwrite.bmp');
imwrite(di3,'E:\paper\2012\投稿2\simulator\resultImage\错误解密图像2imwrite.bmp');
% imwrite(ei,'E:\paper\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);


 

补充:综合编程 , 安全编程 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,