基于Logistic混沌序列的图像加解密算法matlab仿真
  lbWQrknXiYmG 2023年11月02日 41 0

1.算法仿真效果 matlab2022a仿真结果如下: 1.png2.png3.png4.png

2.算法涉及理论知识概要 基于logistic混沌序列的图像加解密算法是一种基于混沌理论的加密算法,它通过混沌序列生成的随机数来改变图像的像素值,从而达到加密的目的。本文将详细介绍基于logistic混沌序列的图像加解密算法。混沌理论是指一类非线性动力学系统的行为,这类系统的特点是具有高度的敏感性依赖于初始条件,即微小的初始条件变化可能会导致系统的演化轨迹产生巨大的差异。混沌理论的兴起与发展,对于科学技术的进步有着重要的推动作用。 logistic混沌系统是一种广泛应用于密码学领域的一维混沌系统,它由以下的迭代公式定义: x_{n+1}=mu x_n(1-x_n) 其中,x_n为第n次迭代的系统状态,$\mu$为控制参数,通常取值在3.569945至4.0之间,且在这个区间内的不同取值会导致系统产生不同的混沌轨迹。 logistic混沌系统的演化轨迹一般表现为一条分叉的曲线,如图1所示。不同的控制参数mu会导致不同的演化轨迹,因此可以通过调整控制参数的值来获得不同的混沌序列。 三、基于logistic混沌序列的图像加密算法 基于logistic混沌序列的图像加密算法是一种基于混沌理论的加密算法,它通过混沌序列产生的随机数来改变图像的像素值,从而达到加密的目的。 选择一个合适的logistic混沌系统,确定其控制参数mu。将需要加密的图像转化为灰度图像,即将彩色图像转化为单通道的灰度图像。 将灰度图像分割为若干个像素块,并将每个像素块的像素值展开为一个一维的数组。对每个像素块的像素值进行加密,具体步骤如下: a. 以logistic混沌系统的迭代公式为基础,生成一个与像素块长度相同的混沌序列。 b. 将混沌序列中的值映射到[0,1]之间,作为像素块中每个像素值加密的密钥。 c. 将像素块中的每个像素值与其对应的密钥异或运算,得到加密后的像素值。 将每个像素块的加密后的像素值重新组合成一个二维的像素块,并将所有像素块组合成加密后的图像。 加密后的图像看起来与原图像几乎没有区别,但是由于每个像素值都经过了logistic混沌序列产生的随机数的加密,因此数据的随机性和不可预测性大大增强,从而达到了加密的目的。 解密的过程与加密的过程类似,选择一个合适的logistic混沌系统,确定其控制参数mu。将加密后的图像分割为若干个像素块,并将每个像素块的像素值展开为一个一维的数组。对每个像素块的像素值进行解密,具体步骤如下: a. 以logistic混沌系统的迭代公式为基础,生成一个与像素块长度相同的混沌序列。 b. 将混沌序列中的值映射到[0,1]之间,作为像素块中每个像素值加密的密钥。 c. 将像素块中的每个像素值与其对应的密钥异或运算,得到解密后的像素值。 将每个像素块的解密后的像素值重新组合成一个二维的像素块,并将所有像素块组合成解密后的图像。解密后的图像与加密前的图像完全一致。 基于logistic混沌序列的图像加解密算法是一种基于混沌理论的加密算法,它通过混沌序列产生的随机数来改变图像的像素值,从而达到加密的目的。由于混沌序列具有高度的随机性和不可预测性,因此基于logistic混沌序列的图像加解密算法具有很高的安全性。

3.MATLAB核心程序

img = rgb2gray(I0);
 
figure;
subplot(121)
imshow(img);
title('原图像');
subplot(122)
imhist(img);
 
 
 
r    = 1.58;
x(1) = 0.65;
Rr   = size(img,1);
Cc   = size(img,2);
 
%Logistic混沌加密
for n=1:Rr*Cc-1
    x(n+1) = r*x(n)*(1-x(n));
end
[VV,II]     = sort(x);
 
%加密
[himg,img_,key] = func_jiami(img,II,Rr,Cc);
 
[img2]          = func_jiemi(img_,II,key,Rr,Cc);
 
 
figure
subplot(121)
imshow(himg);
title('加密图像');
subplot(122)
imhist(himg);
 
 
figure
subplot(121)
imshow(img2);
title('解密图像');
subplot(122)
imhist(img2);
 
 
 
...........................................
 
figure;
subplot(3,2,1)
SHOWS(x1,y1)
title('原图像Horizontal');
 
subplot(3,2,3)
SHOWS(x2,y2)
title('原图像Vertical');
 
subplot(3,2,5)
SHOWS(x3,y3)
title('原图像Diagonal');
 
 
subplot(3,2,2)
SHOWS(x4,y4)
title('加密图像Horizontal');
 
subplot(3,2,4)
SHOWS(x5,y5)
title('加密图像Vertical');
 
subplot(3,2,6)
SHOWS(x6,y6)
title('加密图像Diagonal');

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
lbWQrknXiYmG
最新推荐 更多

2024-05-31