混沌密码与数字图像加密应用
基于混沌的图像加密算法研究

基于混沌的图像加密算法研究图像加密算法是信息安全领域中的重要研究方向之一,它通过对图像进行加密和解密操作,实现保护图像隐私和安全传输等目的。
本文将重点探讨基于混沌的图像加密算法的研究,分析其原理、优势和应用场景。
首先,我们来了解一下混沌理论。
混沌理论是一种非线性动力学系统的研究分支,其在计算机科学和密码学领域有着广泛的应用。
混沌系统具有随机性、不可预测性和灵敏性等特点,这使得混沌可作为图像加密算法的基础。
基于混沌的图像加密算法主要包括两个部分,即混沌映射和置乱操作。
混沌映射是将图像像素映射到一个混沌的迭代序列上,而置乱操作则通过对混沌序列进行重新排列实现对图像的置乱加密。
下面我们将详细介绍这两个部分。
首先是混沌映射。
混沌映射通常选取经典的混沌系统,如Logistic映射和Henon映射等作为基础。
这些映射具有高度的不可预测性和混沌性质,适用于图像加密。
在加密过程中,首先将图像像素值归一化到[0,1]的范围内,然后通过混沌映射将像素值映射到一个混沌序列上。
通过迭代映射操作,可以得到一个与原图像无关的混沌序列。
这个序列将作为后续置乱操作的密钥,确保了加密的随机性和安全性。
接下来是置乱操作。
在加密过程中,通过对混沌序列进行重新排列,实现对图像像素的混乱置乱。
最常用的方法是基于Arnold置乱算法和Baker映射置乱算法。
Arnold置乱算法是一种二维置乱算法,通过对图像像素的行列位置进行迭代映射操作,实现像素位置的混乱。
而Baker映射置乱算法则是通过对图像像素进行乘积操作,实现图像像素值的混乱。
这两种置乱算法具有较高的随机性和不可逆性,能够有效地保障图像的安全性。
基于混沌的图像加密算法具有以下优势:第一,混沌映射和置乱操作具有高度的随机性和不可线性特征,使得加密过程中产生的密钥和置乱后的图像难以被破解和恢复。
这大大增强了图像的安全性。
第二,基于混沌的图像加密算法具有较好的抗攻击性。
混沌系统的不可预测性和随机性能够防止统计分析和密码分析等攻击手段。
数字图像加密技术研究与应用

数字图像加密技术研究与应用随着信息和通信技术的不断发展,人们对信息的保密性要求越来越高。
特别是在互联网高度发达的时代,数字图像成为了人们交流、存储和传递信息的重要手段。
在这样的背景下,数字图像加密技术的研究和应用已成为了热门话题。
数字图像加密技术作为一种保护数字图像安全性的手段,通过将数字图像进行加密处理,从而达到信息的保密目的。
根据操作方法的不同,数字图像加密技术可以分为对称和非对称两种加密方式。
对称加密方式是指加密和解密使用同一密钥的方式。
其中,常见的加密算法有DES、AES和IDEA等。
具体操作过程是,通过密钥将明文图像加密后得到密文图像,接着再通过同一密钥进行解密操作,得到原始的明文图像。
对称加密方式速度较快,但是密钥的传递和保护是一个重要的问题。
因为只要密钥暴露,那么加密就会失去保密效果。
非对称加密方式则是指加密和解密使用不同密钥的方式。
其中,常见的加密算法有RSA和DSA等。
具体操作过程是,将一对密钥产生后将其分为私钥和公钥两部分。
私钥只有所有者才能拥有,而公钥则可以分发给任何需要发送信息的人。
通过公钥进行加密操作,得到密文图像,接着使用私钥进行解密操作,得到原始的明文图像。
非对称加密方式安全性较高,但是处理时间较对称加密方式长。
除了对称和非对称加密方式外,数字图像加密技术还有基于混沌和分形等数学理论的加密方式。
这些加密方式一般被称为“新型加密技术”,通过利用非线性的动态特征进行图像加密,提高了加密系统的安全性,同时也在加密系统中应用了数学领域中的前沿技术,具有较强的科技含量。
数字图像加密技术的研究是为了解决数字图像安全问题,并促进数字图像的更加广泛和更多样的应用。
这些应用包括但不限于在线交易、电子商务、视频会议、多媒体信息系统等。
同时,数字图像加密技术还可以用于政府、军队、企业等领域中,保护机密信息的安全性。
然而,在数字图像加密技术的研究和应用过程中,还存在一些问题亟待解决。
比如密钥管理、加密算法的可靠性和鲁棒性、加密速度等问题。
基于混沌系统的随机图像加密算法设计

基于混沌系统的随机图像加密算法设计随着互联网的迅猛发展,保护个人信息和隐私的需求越来越强烈。
图像加密作为信息安全领域的重要分支之一,旨在通过加密技术保护图像信息的安全性和保密性。
但是,传统的加密算法存在不同程度的安全隐患。
因此,基于混沌系统的随机图像加密算法应运而生,其不仅具备安全性高、速度快等优点,还可以有效抵御不同类型的攻击。
一、混沌系统混沌系统是一种基于非线性动力学的复杂系统,具有高度的不确定性和随机性。
混沌系统的状态随时间呈现出明显的不规则运动,使其具有非常强的随机性和复杂性。
混沌系统的应用范围非常广泛,包括通讯、密码学、图像处理等领域。
二、基于混沌系统的随机图像加密算法基于混沌系统的随机图像加密算法是一种通过对图像进行混沌变换,达到加密保护的一种算法。
该算法将原始图像通过离散化的形式转化成矩阵,然后再通过非线性混沌系统的映射得到一组随机数,通过将矩阵与随机数进行混合生成密文图像,从而达到对图像的保密性。
三、算法流程1、输入原始图像2、将图片转换成灰度图,并将灰度值映射到[0,1]区间3、将灰度图解析成行矩阵4、根据矩阵大小生成混沌序列,并做映射处理5、将混沌序列和矩阵进行混合加密6、获取加密后的矩阵,将其转换回图像7、输出加密后的图像四、算法关键点1、混沌系统的选择。
不同的混沌系统产生的随机数序列具有不同的性质,因此选择适合的混沌系统对算法的保密性至关重要。
2、密钥生成方式。
随机数序列的生成过程直接决定了加密密钥的可靠性,因此要保证生成的密钥足够随机。
3、加密过程。
混合加密过程应该将原图像的信息充分分散,以避免加密过程中出现局部加密,从而提高加密强度。
五、算法结果通过对比传统的图像加密算法和基于混沌系统的随机图像加密算法,我们可以得到以下结论:1、基于混沌系统的随机图像加密算法具有更高的初始条件敏感性,更容易产生随机性,从而大大提高加密安全性;2、基于混沌系统的随机图像加密算法不仅可以有效抵御不同类型的攻击,而且可以降低加密的运算复杂度,提高加密速度;3、基于混沌系统的随机图像加密算法具有更好的加密强度和随机性,可以更好地保护图像信息的安全性和保密性。
基于混沌的数字图像加密算法的研究

t(10)
t(9)
t(2)
t(0)
t(4)
t(3)
t(12)
t(7)
t(8)
t(6)
最后将向量t(i)恢复成图像矩阵,得到加密后的图像。
仿真实验结果及分析
1. 密钥敏感性分析
原始图像
加密图像 x0=0.74356,y0=0.39284
解密图像 x0=0.74357,y0=0.39283
解密图像 x0=0.74356,y0=0.39283
原始图像k3加密图像k20加密图像灰度直方图一基于logistic映射的混沌图像加密算法加密流程图时logistic映射处于混沌状态原始图像加密后图像混沌序列像素值置乱算法像素位置置乱算法logistic映射混沌序列具有遍历性对初值具有敏感性混沌序列具有随机性将原始图像进行分割平均分割为16块正方形小图像所以每块小图像中有n4n4个像l10l11l12l13l14l15103n41l10l11l12l13l14l15103n41k10k11k12k13k14k15103n41x15x14置换函数第一步像素值置乱像素值置乱之前的序列像素值置乱之后的序列按照置换地址矩阵t将k向量中元素进行相应的位置置换k10k11k12k13k14k15y10y11y12y13y14y15y10y11y12y13y14y15t10t11t12t13t14t15第二步像素位置置乱用冒泡法将这16个实值按照从大到小顺序进行排序由yj在y1j中的位置得到置换地址矩阵ti排序之后的像素序列排序之前的像素序列最后将向量ti恢复成图像矩阵得到加密后的图像
加入椒盐噪声的图像
加入高斯噪声的图像
解密图像
解密图像
二、基于二维混沌映射的图像加密算法 算法的原理
图像增补算法的原理
基于混沌序列的通用数字图像加密算法

基于混沌序列的通用数字图像加密算法沌序列,然后根据子密钥及图像类型将其转换为无符号整数序列,最后再依次与对应的像素值进行异或运算以实现置换加用评价指标对加密效果与安全性进行分析。
理论分析与实验结果表明,该算法密钥空间大,具有良好的加密效果、安全统计特性,且抗干忧能力较强。
键词 :数字图像加密 ;像素置换 ;混沌序列 ;Logistic 映射Universal Digital Image Encryption Algorithm Base on Chaotic SequenceLU Shou-dong(School of Information and Statisticsof, FiGuangxinanceandUniversity Economics ,Nanning,Guangxi 530003,China ) stract: In order to protect digital aimage's universal digitalinformation, image encryption algorithm based on is chaoticpropo sequencetly, according tokey the and the size of image, a chaoticis generated. sequence Then, according to the sub-key and the type of im chaotic sequenceis converted to an unsigned integer sequence. Lastly, pixelwill permutation be realizedby usencryptioning theXOR opera ween the unsigned integer sequence and each turn.corresponding The effect piofxel encryption value inis and al s osecurity analyzed by u evaluation index. Theoretical analysis and experimental results show that the algorithm has aeff large space of key, a good encryptionrity and statistical characteristics,a strong anti -anoisebility.words: digital image encryption; pixel permutation; sequenc; Logistice chaoticmapping引言可改变图像的直方图,因此安全性更好。
混沌神经元系统在图像加密方面的应用

混沌神经元系统在图像加密方面的应用混沌神经元系统一直以来被广泛应用于图像加密领域,具备高度的安全性、抗攻击性以及良好的性能。
本文将探讨混沌神经元系统在图像加密方面的应用,并对其原理及实现方法进行详细分析。
首先,我们需要了解混沌系统的基本概念。
混沌系统是一种非线性动力学系统,其特点是极其敏感的初始条件和参数变化,即使微小的变化也会引起系统状态发生剧烈的变化。
混沌系统的输出序列呈现出伪随机性质,这种特性使其成为图像加密领域中非常理想的选择。
混沌神经元系统的本质是通过神经元模型和混沌映射进行交互运算来实现图像加密。
在混沌神经元系统中,神经元模型起到了混沌信号的生成器的作用,通过混沌映射将连续的混沌信号离散化为图像像素的密钥序列。
混沌信号的生成是混沌神经元系统的核心步骤之一。
神经元模型的选择对生成的混沌信号质量具有很大的影响。
一种常用的神经元模型是Logistic神经元模型,其具体公式为:\[ x_{n+1} = \mu x_n (1 - x_n)\]其中,\(x_{n+1}\)是下一时刻的神经元状态,\(x_n\)是当前时刻的神经元状态,\(\mu\)是控制参数。
混沌映射的作用是将连续的混沌信号离散化为图像像素的密钥序列。
常见的混沌映射算法有互相关映射算法和置乱映射算法。
互相关映射算法通过将混沌信号与图像的像素进行卷积运算来生成密钥序列。
置乱映射算法则是根据像素的位置信息和混沌信号的值来调整图像的像素排列顺序,达到置乱的目的。
在加密过程中,混沌神经元系统将混沌信号与原始图像进行异或操作,将图像进行混淆。
由于混沌信号本身具有伪随机性质,故异或操作具有保密性,难以反向推导原始图像。
一个典型的混沌神经元系统图像加密过程如下:1. 初始化神经元模型的参数,如初始状态、控制参数等。
2. 通过神经元模型产生混沌信号。
3. 将混沌信号离散化为图像像素的密钥序列。
4. 将原始图像与密钥序列进行异或操作。
5. 得到密文图像。
基于混沌理论的图像加密算法
基于混沌理论的图像加密算法图像在现代社会中具有非常重要的地位,比如在信息传递、图像处理、医学诊断等方面都有广泛的应用。
然而,在图像传输和存储过程中,隐私泄露和数据被盗取的问题也是不可避免的。
因此,如何保护图像的隐私性和可靠性是一个广泛关注的问题,同时图像加密技术也得到了快速发展。
目前,一些加密算法已经被提出来保证图像安全,但是由于信息量和复杂度的增加,传统算法已经无法保证加密的安全性。
因此,研究新的加密算法就显得尤为重要。
混沌理论作为一种新型的加密算法应用已经得到了广泛的研究。
有人发现,利用混沌理论可以建立一种具有强随机性的加密算法,即混沌加密算法,其具有非线性、复杂度高、随即性强、不可逆变等优点。
同时,超越了传统加密算法的较低安全性限制。
因此,利用混沌理论开发图像加密技术是当前研究的热点,成为了新兴的加密领域。
混沌理论的概述混沌,通常指的是非线性系统中表现出的随时间演化的无序复杂现象。
这种系统的行为特征涉及到以下三个要素:敏感依赖条件、可遍历性条件(即遍历性)和稳定性条件。
混沌现象表现为初始条件略有差异会导致系统进入不同的运动状态,这种变化具有指数级的敏感性。
这种定义意味着直接用微分方程的极小差异会产生完全不同的解。
由于该方法可以保证系统敏感性,因此被广泛应用于图像加密中。
混沌加密算法的基本原理是利用混沌系统产生的随机序列,对待加密图像进行像素级的随机置换、代替、扰动等操作,把原始无序的图像信息变换为密文形式,以达到保护图像信息隐私的目的。
其加密过程通常包含密钥生成、初始向量的选取、像素置换和块代替四个部分。
密钥生成密钥在算法中起到很重要的作用,需要保证足够复杂和安全,能够保证加密算法不易被攻破。
因此,密钥的生成过程是加密算法的关键,其中混沌系统可以用来生成有效的随机数序列,从而保证密钥的安全性。
初始向量的选取初始向量在加密算法中也是非常重要的,主要是为了保证加密的随机性。
在不同情况下,初始向量和密钥的选取方式也会有所不同,一般来说,初始向量可以采用随机方式生成,保证加密的随机化。
基于混沌算法的图像加密与解密研究
基于混沌算法的图像加密与解密研究近年来,随着信息技术的飞速发展和互联网应用的普及,隐私数据的保护变得尤为重要。
图像加密作为保护图像隐私的一种常用手段,受到了广泛关注。
混沌算法作为一种具有高度随机性和无周期性的灵活算法,被广泛应用于图像加密与解密领域。
本文将重点研究基于混沌算法的图像加密与解密技术,并探讨其在实际应用中的潜在优势和挑战。
首先,我们将介绍混沌算法的基本原理和特点。
混沌算法是一种在非线性动力学系统中出现的随机现象,其离散时间动态方程描述如下:x_(n+1) = f(x_n) 公式(1)其中 x 为状态变量,f 为一个非线性映射函数。
混沌算法的主要特点是初始条件和参数对最终结果产生巨大影响,对于微小的改变输入条件,会产生截然不同的输出结果。
基于混沌算法的图像加密和解密技术借鉴了上述的特点,通过将图像的像素值与混沌序列进行异或运算或置换操作,来达到加密的目的。
其中,像素值与混沌序列进行异或运算的操作是常见的加密模式。
这种加密方式可以使得加密后的图像在零交叉点上分布均匀,增强了加密的随机性。
同时,加密和解密使用相同的混沌序列作为密钥,可以简化加密和解密的过程。
接下来,我们将详细讨论基于混沌算法的图像加密和解密方法。
首先是基于混沌序列的图像置乱算法。
在这种方法中,混沌序列生成器作为密钥发挥关键作用。
首先,对图像进行象素重排,然后将混沌序列与图像进行异或运算。
在解密过程中,同样需要首先对图像进行像素重排,然后通过混沌序列与密文进行异或运算得到原始图像。
其次是基于混沌序列的图像加密算法。
在这种算法中,混沌序列的值与图像的像素值进行异或运算,然后通过再次应用混沌序列对加密后的图像进行置乱操作。
解密过程通过相同的混沌序列对密文进行逆操作来还原原始图像。
此外,对混沌算法进行改进和优化也是图像加密与解密研究的一个重要方向。
传统的混沌序列生成器存在周期性和低随机性的问题,可能导致加密算法的安全性下降。
因此,研究人员通过改进混沌映射函数、增加参数等方式来提高混沌序列的随机性和无周期性特点,从而提升图像加密的安全性。
基于混沌映射的高效图像加密算法研究
基于混沌映射的高效图像加密算法研究一、引言图像加密算法是图像信息安全保障的重要手段之一。
随着数字图像在网络传输、存储和处理中的广泛应用,图像安全性越来越受到人们的关注。
基于传统加/解密技术,因为其有规律性和可逆性,存在易被破解的风险,而基于混沌映射的图像加密算法在信息保障领域具备了越来越重要的地位。
二、混沌映射混沌现象是19世纪末出现的,在引力理论、随机噪声、大气环流、金融市场波动、生物生长等各个领域都有应用。
其中,混沌映射因为其非线性、随机性、灵敏性和分形属性,被广泛运用在密码学中。
在密钥的选择和加密环节中,算法使用一个巨大的迭代过程,基于初始值系列和一个所谓的“干扰项”,生成了高度的混沌序列。
然后,密钥和加密信息都从产生的混沌序列中获取。
混沌映射的关键在于对数据的前后顺序和位重组进行处理。
三、基于混沌映射的高效图像加密算法(1)基本概念:基于混沌映射的高效图像加密算法是指依据混沌映射理论,通过特定的算法将明文图像转化为了经过加密处理后的密文图像的一组流程。
(2)加/解密流程:1)密钥初始化:初始化算法的两个密钥,一个为图像密钥,一个为控制端口的密钥,两个密钥都采用混沌映射生成。
2)图像加密:在该步骤中,明文图像首先被分成若干个等大小的块,然后对每个块内部进行加密。
加密的过程包括:像素重排、混沌映射和异或操作。
其中,像素重排和随机重组都可以在保证混沌映射密序列前后顺序无规律的情况下,增加加密强度。
3)图像解密:在该步骤中,密文图像首先被分成若干个等大小的块,每个块内部解密。
解密的流程与加密的流程是对称的。
(3)加密实现:主要采用MATLAB平台搭建,实现,同时考虑编程的简洁和运算效率。
1)实现功能:对加密指令、输出、解密指令等具有良好的可读性和易用性。
2)实现细节:由于工作的特殊性,需要注意的事项包括:混沌映射算法、图像块分组与序列重排,各个变量、数组的规划、初始化和调用。
四、实验结果及分析通过实验,取得了以下结论:(1)在采取合理的物理模型、工具和手段的基础上,基于混沌映射的高效图像加密算法可以实现信息加密的目的。
数字图像的混沌加密技术
1
x
1 x2
0
0 x 1
(2.3) 均值为:
else
x lim
1
N 1
1
x(i) x(x)dx 0
N N i0
1
安全性分析如下:
这种加密方法的安全性应取决于混沌系统的迭代精
度及 x(0) 的取值精度。对于已知明文的攻击方式, 这种图像 加 密 方 法 则 很 容 易 被 攻 击 者 破 译 。这 种 加 密 方 法 使 用 的 加
析现有的两类图像加密方法的安全性,还在此基础上研究了一种改进的图像加密方法。该方法利用混沌系统对初始条件的敏感依赖性,在
传统混沌加密算法基础上引入一个辅助密钥,用以抵抗已知明文攻击。分析及计算机仿真结果表明,该加密方法具有运算量小但是加密效
果良好的特点。
关键词: 混沌系统;混沌序列;图像加密算法;辅助密钥
y(0) 产生两个混沌序列;
Step2: 将两混沌序列归一化, 分别乘以M和N;
S t e p 3 : 将两列序列取整, 取值分别为 0, M 1 与 0, N 1
间的整数;
S t e p 4 : 进一步处理两个序列, 生成遍历 0, M 1 的序列
x(i
)
M 1 i0
与遍历 0,
N
1
的序列
y(i)
密模板是二值序列, 它对所有图像都重复使用, 很容易被
破译。一旦破译了加密模板, 就可以解密其它的图像, 因而
攻击者得到一幅原始图像f 以及加密后的图像 f , 后。所以 该加密方法安全性不是很高。
4.2 问题二
对具有代表性的图像加密方法, 即置乱图像像素位置
的加密方法进行安全性分析。f 是大小为 M N 的图像。 Ste p 1:选定两个Lo gis ti c 混沌系统, 分别以初值 x(0) 、
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
. Word文档 实验项目与实验报告( 1 ) 学科:信息与网络安全 学号:20134088141 :羊波 时间:11月3 日 实验项目: 混沌密码与数字图像加密应用、信息隐藏 实验目的:利用Matlab软件基于Logistic映射的加密算法对图像进行加密和解密,以及利用DEV C++软件、Excel表格绘制图像基于Logistic映射的算法产生的混沌现象。理解Logistic加密算法,掌握加密过程。
一、实验步骤: 1. 完成实验教程1-3 2. 登录网络平台修改作业发布密码,上传实验报告一 3. 注册百度知道号,并加入知行网络团队。 一、实验原理 1.混沌的定义 混沌(Chaos)是非线性确定性系统中具有的内在随机现象,具有运动轨迹的不可预测性、对系统初值和控制参数的敏感性以及运动轨迹的遍历特性等。 第一种定义是基于混沌的“蝴蝶效应”,即倘若一个非线性系统的行为对初始条件的微小变化具有高度敏感的依赖性,则称混沌运动。这就是说,一个系统的混沌行为对初始条件的变化具有高度敏感性,表现出极端的不稳定性。这种高度不稳定性,是指在相空间内初始极其邻近的两条轨道,随着时间的推进,两条轨道的距离彼此以指数形式迅速分离而永不相遇,它们的行为具有局部不稳定性。 第二种混沌定义是基于Li-Yorke定理,从数学上严格定义。Li-Yorke定理为:设f(x)是[a,b]上的连续自映射,若f(x)有3个周期点,则对任何正整数n,f(x)有n周期点。混沌定义如下:闭区间I上的连续自映射f(x),倘若满足条件,则一定出现混沌现象: (1)f周期点的周期无上界; (2)闭区间I上存在不可数子集S。
2. Logisitc 混沌模型
由于混沌系统具有伪随机性、不确定性和对初始条件与系统参数的极为敏感性,其自身的动力学特性使混沌现象天生具备了应用于保密安全的条件,在图像加密领域表现出良好的应用前景。Logistic混沌系统有一个自变量,是一维混沌系统。含有两个自变量的混沌系统是二维的,含有三维系统及多于三维的混沌系统是高位混沌系统。Logistic混沌系统由下式给出:
1(1) [0,1]nnnnxxxx,n=1,2,…… (1)
研究表明,式(1)这个看似极为简单的方程当参数λ变化时有极复杂的动态行为。当0型性态简单;当33.57时,系统处于混沌状态。 二、实验步骤 下面以一副256×256的图像test.gif 为例,利用MATLAB软件进行图像加密,加密程序如下: %混沌加密Logisitc加密算法,图片像素为256*256,可直接放在work子文件夹中 . Word文档 clc; clear all; global M; global N; global Ximage; global Yimage; global sy; Ximage=double(imread('test.gif')); key1=0.1; key=4; [M,N]=size(Ximage); figure(1) imshow(Ximage,[]); Ximage=double(Ximage); for(i=1:M) for(j=1:N) key1=key*key1*(1-key1); a(i,j)=key1; end end key2=0.2; for(i=1:M) for(j=1:N) key2=key*key2*(1-key2); b(i,j)=key2; end end x=0.4*a+0.6*b; e=round(x*256); tt=0.01; Yimage=tt*Ximage+(1-tt)*e; figure(2) imshow(Yimage,[]); figure(3) imhist(uint8(Ximage)); title('原图像的直方图'); figure(4) imhist(uint8(Yimage)); title('加密之后的直方图');
%%置乱度分析 Yimage=double(Yimage); sx=sum(sum((Ximage-256*rand(M,N)).^2)); DD=sy/sx %置乱度 . Word文档 global M; global N; global Ximage; global Yimage; key1=input('请输入密钥key1:'); key=4; for(i=1:M) for(j=1:N) key1=key*key1*(1-key1); a(i,j)=key1; end end key2=input('请输入密钥key2:'); for(i=1:M) for(j=1:N) key2=key*key2*(1-key2); b(i,j)=key2; end end x=0.4*a+0.6*b; e=round(x*256); tt=0.01; Zimage=(Yimage-(1-tt)*e)/tt; figure(5) imshow(Zimage,[]);
加密过程: ① 首先将要加密的图片test.gif保存在d盘中,如下图1所示:
图1存在d盘中的test图片 .
Word文档 ② 打开Matlab软件并把上面的加密程序输入软件环境窗口,如下图2所示:
图2在Matlab中输入的编程 ③ 程序输入完成后,按回车键,程序会运行得出5张图片,分别为加密前的原图和加密后的图片、加密前的直方图和加密后的直方图。如下图3、图4、图5、图6所示:
图3加密前的原图 .
Word文档 图4加密后的图片
图5加密前的直方图 .
Word文档 图6加密后的直方图 说明:加密后的灰度直方图分析可以用来衡量加密算法的扰乱性。上图3、图4、图5、图6是加密前后的图像以及它们的直方图的对比。可见,加密后的直方图呈均匀分布,未保留任何 . Word文档 明文信息。图6加密后的直方图的图像越均匀说明混沌效应越好,上图6总体上来说是均匀的,只是
在编程的时候考虑的只是黑白色的点,所以直方图看起来全部的点不是绝对的均匀。 解密过程:
⑦如果想得到原图(解密),必须在MATLAB界面窗口输入两个密钥, “请输入密匙key1:0.1 请输入密匙key2:0.2”; 如下图7所示:
图7解密之后得到的原图 从上图可以看出,加密后的图像没有留下原图的痕迹,而解密后的图像看不出差别,此方法加密效果良好。 换一副带有彩色256×256的图像111.gif 为例,利用MATLAB软件进行图像加密,加密程序跟
上面的差不多,只是把图片名称改了,步骤以上的也一样如下所示: ① 把修改图片名称后的程序输入Matlab软件中,如下图8所示: .
Word文档 图8修改图片的名称 ② 运行之后得出来的结果如下图9、图10、图11、图12所示:
图9加密的原图 .
Word文档 图10加密后的图 图11 加密前的图像直方图 .
Word文档 图12加密后的图像直方图 图13解密后的到的图像 说明:由上图9、图10、图11、图12、图13可知,彩色图片加密后的图片跟原先用的黑白图片加密的图像一样都是由黑白的点组成的。而且彩色图片加密后的图像直方图总体上来说也是符合混沌效应现象的。
C语言代码实现混沌效应,加密程序如下: //简单模拟LOGISTIC模型C++源程序 . Word文档 #include #include #define N 300 using namespace std; void fun(float x0,float u,int k,float result[]) { int i=0; float temp_1,temp_2,temp_3; temp_1=x0; while(k) { result[i++]=temp_1; temp_2=1-temp_1; temp_3=u*temp_1; temp_1=temp_2*temp_3; k--; } } int main() { int i,k; float x0,u,*result,*ratio,sum=0.0,ave,s=0.0,st; cout<<"How many logistic sequence do you wanna output?"