基于混沌系统与DNA编码的彩色数字图像解密系统

目 录

1绪论 1
1.1课题研究背景和意义 1
1.2课题研究现状 1
1.3本文主要研究内容及结构安排 2
2混沌系统与 DNA 编码 3
2.1混沌系统 3
2.1.1混沌的特性 3
2.1.2Logistic 映射 3
2.1.3Chen 超混沌系统 3
2.2DNA 编解码与运算 4
2.2.1DNA 编码与解码规则 4
2.2.2DNA 运算法则 5
3基于混沌系统与 DNA 运算的图像加密系统 7
3.1加密算法思想 7
3.2加密算法具体步骤 8
3.3解密算法具体步骤 10
3.4实验仿真及性能分析 11
3.4.1实验仿真结果 11
3.4.2直方图分析 12
3.4.3相邻位置数据值关联性 12
3.4.4抗裁剪性能 16
3.4.5抗噪声性能 18
3.4.6图像质量评价 19
3.4.7信息熵 20
3.4.8密钥敏感性 21
3.4.9密钥容量 23
4基于混沌系统与 DCT 变换的图像压缩加密系统 24
4.1加密算法结构 24
4.2DCT 压缩加密算法具体步骤 24
4.3DCT 解密解压算法步骤 26
4.4实验仿真及性能分析 27
4.4.1实验仿真结果 27
4.4.2不同压缩比情况下的解密结果 28
4.4.3密钥敏感性分析 29
4.4.4密钥容量计算 29
5总结与展望 30
5.1 总结 30
5.2 展望 31
主要参考文献 32
致谢 33
1.3本文主要研究内容及结构安排
从上述内容可以看出,基于高维混沌系统的图像加密方案拥有十分广阔的发展前景和研究价值,并且在未来很长时间内仍将是图像加密领域的重点研究内容。本文主要研究了两种基于混沌理论的图像加密方案并进行仿真实验和性能测试,第一种方案是基于 Chen 超混沌系统、Logistic 混沌系统以及 DNA 编码运算解码三者相结合的彩色图像加密算法。此加密算法结合了三者各自的优点,使得加密系统具有密钥容量大,抗噪声能力强,抗裁剪性能强,抗攻击能力强等特点。第二种方案是基于 Logistic 混沌系统和离散余弦变换
(DCT)相结合的灰度图像压缩加密算法。此算法可将灰度图像根据实际需要进行不同比例的压缩并加密,使得图像在传输过程中既能提高效率,又能保护数据。在压缩率较低的情况下,接收端进行解密还原后的图像与原始图像差别很小。
本论文共分为五个章节,下面是各章节的内容安排:
第一章介绍基于混沌理论的数字图像加密的发展背景和研究意义,阐述了本论文的主要研究内容与整体结构安排。
第二章介绍 Logistic 混沌系统和 Chen 超混沌系统的构成与特性,同时对 DNA 编码、解码和 DNA 运算进行深入解释。本章内容为第三章节要讲述的加密算法提供了坚实的理论基础。
第三章研究和改进基于混沌系统和DNA 编码运算解码三者相结合的一种彩色数字图像分块加密算法。对此算法的加密与解密过程进行详细地描述和 Matlab 仿真,同时对此加密算法进行性能测试,主要包括直方图分析、相邻位置数据值关联性分析、抗裁剪性能、抗噪声性能、图像质量评价等。
第四章研究和改进基于 Logistic 一维混沌系统和离散余弦变换(DCT)相结合的灰度图像频域压缩加密算法。对此算法的加密与解密过程进行详细地介绍和仿真实验,得到不经过解密而直接解压的结果,以及将在不同压缩比例下正确解密解压后的图像恢复结果进行对比,最后对算法的性能做了简单的分析。
第五章分析算法中的不足之处,对全文内容进行总结和展望。

%% 基于混沌系统与DNA编码的彩色数字图像解密系统
%-------------------------------------------------------------------------------------------------------%
clear;clc;
I=imread('../原始、加密、解密图片/加密后的lena.png','png');           %读取图像信息
I1=I(:,:,1);     %R通道
I2=I(:,:,2);     %G通道
I3=I(:,:,3);     %B通道
[M,N]=size(I1);                      %将图像的行列赋值给M,N
t=4;    %分块大小
SUM=M*N;
u=3.9999;     %密钥1:μ
xx0=0.3883;
xx1=0.4134;
ppx=zeros(1,M+1000);        %预分配内存
ppy=zeros(1,N+1000); 
ppx(1)=xx0;
ppy(1)=xx1;
for i=1:M+999                 %进行M+999次循环,共得到M+1000点(包括初值)
    ppx(i+1)=u*ppx(i)*(1-ppx(i));
end
for i=1:N+999                 %进行M+999次循环,共得到M+1000点(包括初值)
    ppy(i+1)=u*ppy(i)*(1-ppy(i));
end
ppx=ppx(1001:length(ppx));            %去除前1000点,获得更好的随机性
ppy=ppy(1001:length(ppy));

[~,Ux]=sort(ppx,'descend');
[~,Uy]=sort(ppy,'descend');

for i=N:-1:1
    temp = I1(:,i);
    I1(:,i) = I1(:,Uy(i));
    I1(:,Uy(i)) = temp;
    temp = I2(:,i);
    I2(:,i) = I2(:,Uy(i));
    I2(:,Uy(i)) = temp;
    temp = I3(:,i);
    I3(:,i) = I3(:,Uy(i));
    I3(:,Uy(i)) = temp;
end
for i=M:-1:1
    temp = I1(i,:);
    I1(i,:) = I1(Ux(i),:);
    I1(Ux(i),:) = temp;
    temp = I2(i,:);
    I2(i,:) = I2(Ux(i),:);
    I2(Ux(i),:) = temp;
    temp = I3(i,:);
    I3(i,:) = I3(Ux(i),:);
    I3(Ux(i),:) = temp;
end
%% 2.产生Logistic混沌序列
% u=3.990000000000001; %密钥敏感性测试  10^-15
%u=3.99;%密钥:Logistic参数μ
% x0=0.7067000000000001; %密钥敏感性测试  10^-16
x0=0.5475; %密钥:Logistic初值x0
% x0=0.3462;            %home图片
p=zeros(1,SUM+1000);
p(1)=x0;
for i=1:SUM+999                        %进行SUM+999次循环,产生SUM+1000个数据
    p(i+1)=u*p(i)*(1-p(i));
end
p=p(1001:length(p));

%% 3.将p序列变换到0~255范围内整数,转换成M*N的二维矩阵R
p=mod(round(p*10^4),256);
R=reshape(p,N,M)';  %转成M行N列

%% 4.求解混沌方程
%求四个初值X0,Y0,Z0,H0
r=(M/t)*(N/t);
% X0=0.5008000000000001;        %密钥敏感性测试
X0=0.4953;
Y0=0.4265;
Z0=0.6928;
H0=0.7803;
% X0=0.5056;        %home图片
% Y0=0.505;
% Z0=0.4564;
% H0=0.3062;
A=chen_output(X0,Y0,Z0,H0,r);
X=A(:,1);
X=X(3002:length(X));
Y=A(:,2);
Y=Y(3002:length(Y));
Z=A(:,3);
Z=Z(3002:length(Z));
H=A(:,4);
H=H(3002:length(H));

%% 5.DNA编码
%X,Y分别决定I和R的DNA编码方式,有8种,1~8
X=mod(round(X*10^4),8)+1;
Y=mod(round(Y*10^4),8)+1;
Z=mod(round(Z*10^4),4);
Z(Z==0)=4;      %加减法互换
Z(Z==1)=0;
Z(Z==4)=1;
H=mod(round(H*10^4),8)+1;
e=N/t;
for i=r:-1:2
    Q1_R=DNA_bian(fenkuai(t,I1,i),H(i));
    Q1_G=DNA_bian(fenkuai(t,I2,i),H(i));
    Q1_B=DNA_bian(fenkuai(t,I3,i),H(i));
    
    Q1_last_R=DNA_bian(fenkuai(t,I1,i-1),H(i-1));
    Q1_last_G=DNA_bian(fenkuai(t,I2,i-1),H(i-1));
    Q1_last_B=DNA_bian(fenkuai(t,I3,i-1),H(i-1));
    
    Q2_R=DNA_yunsuan(Q1_R,Q1_last_R,Z(i));        %扩散前
    Q2_G=DNA_yunsuan(Q1_G,Q1_last_G,Z(i));
    Q2_B=DNA_yunsuan(Q1_B,Q1_last_B,Z(i));

    Q3=DNA_bian(fenkuai(t,R,i),Y(i));
    
    Q4_R=DNA_yunsuan(Q2_R,Q3,Z(i));
    Q4_G=DNA_yunsuan(Q2_G,Q3,Z(i));
    Q4_B=DNA_yunsuan(Q2_B,Q3,Z(i));
    
    xx=floor(i/e)+1;
    yy=mod(i,e);
    if yy==0
        xx=xx-1;
        yy=e;
    end
    I1((xx-1)*t+1:xx*t,(yy-1)*t+1:yy*t)=DNA_jie(Q4_R,X(i));
    I2((xx-1)*t+1:xx*t,(yy-1)*t+1:yy*t)=DNA_jie(Q4_G,X(i));
    I3((xx-1)*t+1:xx*t,(yy-1)*t+1:yy*t)=DNA_jie(Q4_B,X(i));
end
Q5_R=DNA_bian(fenkuai(t,I1,1),H(1));
Q5_G=DNA_bian(fenkuai(t,I2,1),H(1));
Q5_B=DNA_bian(fenkuai(t,I3,1),H(1));

Q6=DNA_bian(fenkuai(t,R,1),Y(1));

Q7_R=DNA_yunsuan(Q5_R,Q6,Z(1));
Q7_G=DNA_yunsuan(Q5_G,Q6,Z(1));
Q7_B=DNA_yunsuan(Q5_B,Q6,Z(1));

I1(1:t,1:t)=DNA_jie(Q7_R,X(1));
I2(1:t,1:t)=DNA_jie(Q7_G,X(1));
I3(1:t,1:t)=DNA_jie(Q7_B,X(1));

Q_jiemi(:,:,1)=uint8(I1);
Q_jiemi(:,:,2)=uint8(I2);
Q_jiemi(:,:,3)=uint8(I3);

%% 6、去除加密时补的零
M1=0;   %加密时补零的参数,M1=mod(M,t);作为密钥
N1=0;   %加密时补零的参数,N1=mod(N,t);作为密钥
if M1~=0
    Q_jiemi=Q_jiemi(1:M-t+M1,:,:);
end
if N1~=0
    Q_jiemi=Q_jiemi(:,1:N-t+N1,:);
end

figure;imhist(Q_jiemi(:,:,1));
figure;imhist(Q_jiemi(:,:,2));
figure;imhist(Q_jiemi(:,:,3));

%比较解密后的图与原图是否完全相同
%II=imread('../原始、加密、解密图片/lena.png','png');
%cha=sum(sum(sum(Q_jiemi-II)));      %两幅图做差后求总和
%% 保存图片

imwrite(Q_jiemi,'../原始、加密、解密图片/解密后的lena.png','png');       
disp('您输入的解密密钥为:');
disp(['密钥1:μ=',num2str(u),'     密钥2:x0=',num2str(x0),'    密钥3:x(0)=',num2str(X0),'    密钥4:y(0)=',num2str(Y0),'   密钥5:z(0)=',num2str(Z0),]);
disp(['密钥6:h(0)=',num2str(H0),'   密钥7:M1=',num2str(M1),'   密钥8:N1=',num2str(N1),'   密钥9:xx0=',num2str(xx0),'   密钥10:xx1=',num2str(xx1)]);
disp('解密完成'); 
figure;imshow(Q_jiemi);
%title('解密后图片');

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shejizuopin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值