基于位运算的数字加密算法的研究

更新时间:2024-04-21 06:30:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

吉 林 农 业 大 学

毕业论文

题 目

基于位运算的数字图 像加密算法的研究

学 院

信息技术学院

专业班级

电子信息科学与技术二班

指导教师(姓名、职称)

姓 名

2013年 5 月 10 日

1

指导教师签字:年 6 月 评阅人签字: 年 6 月 2

论文评语:

2013日

2013

摘要

给出了一种混沌序列的非线性二值化方法,提出了一种基于位运算的数字图像加密算法。加密算法首先利用传统的混沌系统产生的混沌序列对图像进行位置置乱;其次对置乱后图像进行基于灰度值二进制序列的置乱操作;最后应用文中方法对结果图像灰度值的二进制序列按位进行异或运算。该方案的安全性依赖于随机混沌图像以及混沌系统的初始参数。借助MATLAB6.5 软件平台编程实现, 并研究了加密算法的抗破损能力。实验结果表明,该加密算法具有很好的安全性,在信息安全领域有较好的应用前景和研究价值。

关键词: 图像加密 异或 混沌系统

I

Abstract

A nonlinear bit sequences generating algorithm based on chaotic system is presented , and an image encryptionalgorithm based on bit - computation is presented as well. Firstly , the image is pretreated by permutation based on chaoticsystem; secondly the bit sequence obtained by the pixel gray value are also be permuted ; finally , the bit sequence is oper2ated by XOR with the pseudo - random sequence generated from the chaotic system , The experiment results show that the algorithm performs considerable security,which has well research value and application foreground in the information security field.

Key words: image encryption XOR chaotic system

II

目录

错误!未找到引用源。

I

第1章 引 言

目前主要有两种方式可实现对数字图像的保护:数字水印技术和数字图像加密技术. 数字水印技术主要通过在被保护图像中加入水印信息实现版权保护,该技术并不改变被保护图像的内容信息[1 ] ;数字图像加密技术则是对被保护图像进行加密,使得被保护图像的内容不可见,从而实现了对该数字图像的保护[2 ] . 由于数字图像具有信息量大、相邻像素之间关联性较强等特性,所以传统基于文本的加密技术并不适宜于直接应用于数字图像的加密[3 ] .混沌现象是一种普遍存在的自然现象,混沌系统的伪随机性、初值敏感性和无周期等优良特性使混沌系统在密码学领域获得了广泛应用.应用混沌系统于图像加密的关键是对生成的混沌序列的二值化转化. 文献[4 ]提出了一种混沌序列二值化方法,但安全性较差. 文献[5 ]对文献[4 ]的离散化过程进行了改进,虽可增强安全性,导致其算法效率过低,对于长序列的实用性不强.文中给出一种基于位运算的数字图像加密算法. 该方法主要分为置乱加密和异或运算两个步骤,由于整个加密过程均基于数字图像的灰度值二值化矩阵进行,因此可保证加密过程具有较好的安全性.为了有效提升加密算法的安全性,文中还给出了一种非线性二值伪随机序列离散化方法. 实验结果表明,文中算法的加密和恢复效果良好

1

第2章 加密算法的设计

2.1 基本理论

2.1.1 混沌理论

现代科学意义上的混沌是个难以精确定义的概念,不同领域的科学家往往对其作出不同的定义。1975 年Li 等人[13]给出了混沌的一个数学定义,这也是第一次赋予混沌这个词以严格的科学意义。混沌的李—约克定义如下:设连续自映射f ∶ i→IR,I 是R 中的一个闭区间,如果存在不可数集合SI 满足:

a) S 不包含周期点。

b) 任给X1,X2∈S( X1≠X2) 有lim i→∞sup | fi ( X1) - fi ( X2) | > 0 ( 5)lim i→∞inf | fi ( X1) - fi ( X2) | = 0 ( 6)其中,fi ( ·) = f( f( ···f( ·) ) ) 表示i 重函数关系。c) 任给X1∈S 及f 的任意周期点P∈Ilim i→∞sup | fi ( X1) - fi ( P) | > 0 ( 7)则称f 在S 上是混沌的[13]。由李—约克的定义可见,他们是用非周期、敏感初条件和有界三个方面的本质特征来对混沌进行刻画的。产生混沌信号的迭代方程有很多,比较典型的有Logistic、Henon、Quadratic 和MacKey Glass 等混沌映射方程。目前的研究文献大多集中于Logistic 混沌序列方程。

2.1.2 Logistic混沌映射理论 :

一维Logistic映射从数学形式上来看是一个非常简单的混沌映射,早在20世纪50年代,有好几位生态学家就利用过这个简单的差分方程,来描述种群的变化。此系统具有极其复杂的动力学行为,在保密通信领域的应用十分广泛,其数学表达公式如下:

2

Xn + 1 = μXn( 1 - Xn),μ∈[0,4],X∈[0,1]

其中μ∈[0,4]被称为Logistic参数。研究表明,当X∈[0,1]时,Logistic映射工作处于混沌状态,也就是说,有初始条件X0在Logistic映射作用下产生的序列是非周期的、不收敛的,而在此范围之外,生成的序列必将收敛于某一个特定的值。如下图2-1所示:

图2-1

可以看出,在μ的取值符合μ∈[0,4] 的条件,特别是比较靠近4时,迭代生成的值是出于一种伪随机分布的状态,而在其他取值时,在经过一定次数的迭代之后,生成的值将收敛到一个特定的数值,这对于我们来说是不可接受的。 下图中描述了X0值一定时,对于不同的μ的取值,迭代可能得到的值,如图2-2,图中的点即表明了所有可能的X取值范围。从图中我们可以看出,在μ越接近4的地方,X取值范围越是接近平均分布在整个0到1的区域,因此我们需要选取的Logistic控制参数应该越接近4越好。在μ的值确定之后,我们再来看看初始值X0对整个系统的影响。刚才也说过了,混沌系统在初始值发生很小变化时,得到的结构就会大相径庭,在Logistic混沌映射中也是如此。

3

图2-2

上图显示的是X0= 0.663489000和X0= 0.663489001,μ=3.99时两个Logistic序列之差的图像,很明显,在最开始20多次迭代,两者的差很小,近似等于0,但随着迭代次数的增加,两个序列的值显示出一种无规律的情形,两者相差也比较大了。因此可以看出该系统具有很好的雪崩效应。

我们在使用Logistic混沌系统时,可以先让系统先迭代一定次数之后,再使用生成的值,这样可以更好地掩盖原始的情况,使雪崩效应扩大,这样可以具有

4

更好的安全性。

最后我们再来看看Logistic的随机分布特性,一个好的伪随机序列应该有比较平均的分布,也就是说,每个数出现的概率应该是相等的。我们对X0=0.2,μ=3.9999的Logistic混沌映射进行30000次迭代后对其值进行统计,分布情况如下表2-1所示:

表2-1

分布区间 0 - 0.1 0.1 - 0.2 0.2 - 0.3 0.3 - 0.4 0.4 - 0.5 0.5 - 0.6 0.6 - 0.7 0.7 - 0.8 0.8 - 0.9 0.9 - 1

5

个数 5919 2685 2218 2140 1890 1973 1937 2310 2733 6195 所占百分比 19.73% 8.95% 7.39% 7.13% 6.30% 6.58% 6.46% 7.70% 9.11% 20.65%

从上表中我们可以看出,Logistic映射的迭代序列的分布并不是均匀的,对于其他的X0取值也有类似的结构。而且从表中我们还可以看出,其分布是一种两头大中间小的情形。虽然分布情况并不是很平均,但是对于一般情形来说,Logistic映射序列是可以满足我们的需求的。而且我们可以对其想办法加以改进,使之可以获得更好的平均性。

本文对Logistic混沌映射进行了一些粗浅的分析,分析了控制参数对其的影响、Logistic的雪崩效应、序列值的分布情况。在初值和控制参数都会改变的情况下,该系统还是具备很好的安全性的。目前已经有很多人提出基于Logistic的改进算法,很好地改进了平均性。Logistic算法在图像加密领域已经有不少论文出现,目前对其的研究也很成熟了,我们可以对其加以改进使之符合矢量数据加密的要求。

研究表明,当3. 569≤μ≤4 时,Logistic 映射于混沌态。这时对应的迭代序列非周期、非收敛,对初始值强敏感,产生出的序列呈现出混沌状态[14]。Logistic 映射对μ 值和初值X0具有敏感的依赖性。对于不同的μ 值,Logistic 映射呈现不同的特性。随着μ 值的变化,不断出现倍周期分岔,直到出现混沌状态。当系统进入混沌状态时,由初值X0在Logistic 映射的作用下将产生具有0 均值、δ-like 型自相关性和互相关性为0 的混沌序列,产生的混沌序列的遍历性等同于白噪声。在初值相差甚微的情况下,当n≥24 时,两个Xn就有很大的差别。

2.1.3 灰度图像及直方图

一幅完整的图像,是由红色、绿色、蓝色三个通道组成的。红色、绿色、蓝色三个通道的缩览图都是以灰度显示的。用不同的灰度色阶来表示“ 红,绿,蓝”在图像中的比重。通道中的纯白,代表了该色光在此处为最高亮度,亮度级别是255。

6

通道是整个Photoshop显示图像的基础。色彩的变动,实际上就是间接在对通道灰度图进行调整。通道是Photoshop处理图像的核心部分,所有的色彩调整工具都是围绕在这个核心周围使用的。

在计算机领域中,灰度数字图像是每个像素只有一个采样颜色的图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;灰度图像在黑色与白色之间还有许多级的颜色深度。但是,在数字图像领域之外,“黑白图像”也表示“灰度图像”,例如灰度的照片通常叫做“黑白照片”。在一些关于数字图像的文章中单色图像等同于灰度图像,在另外一些文章中又等同于黑白图像。

若图象具有L级灰度(通常L=256,即8位灰度级),则大小为m(n的灰度图象f(x,Y)的灰度直方图H[k],k=0…L-1,可按如下步骤计算获得: (1)初始化:for(k=O;k

for(x=O;x

for(y=O;y

(3)规格化:

flOr(x=O;x

for(y=O;y

直方图均衡化是通过灰度变换将一幅图象转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。

直方图均衡化变换:设灰度变换s=f(r)为斜率有限的非减连续可微函数,它将输入图象Ii(x,y)转换为输出图象Io(x,y),输入图象的直方图为Hi(r),输出图象的直方图为Ho(s),则根据直方图的含义,经过灰度变换后对应的小面积元相等:Ho(s)ds=Hi(r)dr变换函数f(r)必须满足下列2个条件:

(1)f(r) (O(r(1)是单值函数、且单调增加; (2)O(f(r) (1,(O(r(1)。

上面第一个条件保证了灰度级从黑到白的次序,第二个条件保证了变换后象素的灰度级仍然在容许的范围之内。r=f-l(s)为逆变换函数,同样也要满足上述条

7

件。

直方图修正的例子

假设有一幅图像,共有6 4(6 4个象素,8个灰度级,试进行直方图均衡化处理。根据公式可得:

s2=0.19+0.25+0.2l=O.65, s3=0.19+0.25+0.2l+O.16=0.8l, s4=0.89,s5=0.95,s6=0.98,s7=1.00。

由于这里只取8个等间距的灰度级,变换后的s值也只能选择最靠近的一个灰度级的值。因此,根据上述计算值可近似地选取:

sO\/7,s 1¨3/7,s2¨5/7,s3\/7, s4¨6/7,s5¨1,s6¨l,s7¨1。

可见,新图像将只有5个不同的灰度等级,于是我们可以重新定义其符号: s'O=l/7,s’1=3/7,s'2=5/7,s’3=6/7,s’4=l。

因为由rO=O经变换映射到sO=1/7,所以有n0=790个象素取sO这个灰度值;由rl=3/7映射到sl=3/7,所以有1 02 3个象素取s 1这一灰度值;依次类推,有850个象素取s2=5/7这一灰度值;由于r3和r4均映射到s3=6/7这一灰度值,所以有656+329=98 5个象素都取这一灰度值;同理,有245+1 22+81=448个象素都取s4=1这一灰度值。上述值除以n=4096,便可以得到新的直方图。离散情况下不可能作到绝对的一致。

在直方图中,只知道具有某一灰度值的象素有多少个,但并不知道这些象素的位置;

一个图像决定一个唯一的直方图,但是有时不同的图像具有相同的直方图; 如果已知一幅图像中各个区域的直方图,则把它们加起来,就可得到这个图像的直方图。

对图像进行数字化时,利用直方图可以检查输入图像的灰度值在可利用的灰度范围内分配得是否适当;可以根据直方图确定二值化的阈值;当物体部分的灰度值比其它部分的灰度值大时,可以用直方图求出物体的面积,实际上是象素数=灰度大于和等于q的象素的总和;

当物体部分的灰度值比其它部分的灰度值大时,可以用直方图求出物体的面积,实际上是象素数=灰度大于和等于q的象素的总和;利用色彩直方图可以进行

8

基于颜色的图象分割。

2.1.4 二值图像

指每个像素不是黑就是白,其灰度值没有中间过渡的图像。二值图像一般用来描述文字或者图形,其优点是占用空间少,缺点是,当表示人物,风景的图像时,二值图像只能描述其轮廓,不能描述细节。这时候要用更高的灰度级。

二值图像是每个像素只有两个可能值的数字图像。人们经常用黑白、B&W、单色图像表示二值图像,但是也可以用来表示每个像素只有一个采样值的任何图像,例如灰度图像等。

二值图像中所有的像素只能从0和1这两个值中取,因此在MATLAB中,二值图像用一个由0和1组成的二维矩阵表示。这两个可取的值分别对应于关闭和打开,关闭表征该像素处于背景,而打开表征该像素处于前景。以这种方式来操作图像可以更容易识别出图像的结构特征。二值图像操作只返回与二值图像的形式或结构有关的信息,如果希望对其他类型的图像进行同样的操作,则首先要将其转换为二进制的图像格式,可以通过调用MATLAB提供的im2bw()来实现。

2. 2 算法原理

文中算法主要由基于位运算的置乱加密和基于位运算的异或运算加密两部分组成。 为提高算法的加密效果和安全性,加密前必须对图像进行基于位置置乱的预处理。 加密算法可描述如下: 算法1 加密算法

Step1 : 输入一幅大小为M × N 的加密图像2-3. 利用混沌系统产生基于位置变换的置乱序列L ,再应用L 对Image 进行基于位置置乱的预处理,得到图2-4;

9

图2-3 图2-4

Step2 :将预处理的结果图像Pimage 的灰度值转换为二进制序列,得到与图像Pimage 的灰度矩阵对应的三元函数Bimage ( x , y , b) , 其值为图像中( x , y) 处的灰度值的第b 位. 使用混沌系统产生二进制序列的位置置乱序列Ti , i = 1 ,2 , ?, M ×N ,按先行后列的次序对Bimage ( x , y) 所对应的二值序列进行基于Ti 的位置置乱,则可得到经过置乱变换处理的三元函数Bimage3( x , y , b) ;

Step3 :应用混沌系统生成伪随机的二值序列B= { b1 b2 ?bM ×N ×8} ,与Bimage3( x , y , b) 所对应的二值序列进行异或运算,再将其转换成灰度值,最后可得到加密图像Eimage。解密是加密的逆过程, 根据算法的加密过程逆向操作即可完成解密。

10

图2-5 图2-6

2. 3 基于混沌系统的置乱序列产生算法

在加密算法中, Step1 和Step2 均需获得相应的置乱序列. 文献[ 5 ] 给出了一种基于逐次洗牌的置换序列生成算法, 它的时间复杂度是O ( M ×N) ,且具有较好的效率和安全性. 为将该置换序列生成算法应用于图像的加密和解密过程, 可结合混沌系统的伪随机性对其改进.

算法2 置换序列生成算法

Step1 :给定L = ( l1 , l2 , ?, lm) , 初值为(1 ,2 ,?, m) ;

Step2 :应用混沌系统生成相同大小的伪随机序列{ a1 , a2 , ?, am } ,其中ai ∈(0 ,1) ;

Step3 :按lm , ?, l2 , l1 次序对L 序列中的所有l i 执行Step4 ;

Step4 :令j = 「ai ×( i - 2) + 1?,交换l i 和l j .该算法可产生预处理所需的基于待加密图像Image 灰度矩阵的置乱序列L 和应用于图像Pimage灰度值二进制序列的位置置乱序列Ti , i = 1 ,2 , ?,M ×N 。

2. 4 基于混沌系统的二值伪随机序列产生方法

2. 4. 1 二值伪随机序列产生方法

11

在加密算法的Step3 中,需要获取基于混沌系统的伪随机二值序列. 以下采用经典的Logistic 映射构造混沌序列,其混沌系统可表述为:

ak +1 = μ ak (1 - ak) , k = 0 ,1 ,2 , ? (1)

其中,当3. 57 < μ ≤4 时, 该混沌映射处于混沌状态, 称(3. 57 ,4 ] 为混沌区域. 由于a0 ∈ (0 ,1) , 则Logistic 映射可以定义在(0 ,1) 上, 所以该混沌系统能产生定义于(0 ,1) 上的伪随机序列{ ak} ∞k =0 .假定已获得有限长度的混沌序列{ a1 , a2 , ?,an | ai ∈(0 ,1) , i = 1 ,2 , ?, n} ,离散化后所获得的二值序列记为{ b1 , b2 , ?, bn | bi ∈(0 ,1) , i = 1 ,2 ,?, n} ,则离散化的关键在于找出它们之间的转换方案. 在文献[ 5 - 6 ] 的基础上, 文中给出基于错位的非线性的混沌序列离散化方法. 其基本思路是根据与之间隔P 的若干序列值之间关系以确定二值序列,为了消除邻近元素的相关性,可抛弃若干中间元素. 于是转换方法为:

bi =0 , ai ≤0. 51 , ai > 0. 51 ≤ i ≤2 P (2)

bi =0 , ai ≤ 12δ+ 2 Σi - P+λ- δj = i - Paj + Σi - P+λ+δj = i - P+λaj1 , ai >12δ+ 2 Σi - P+λ- δj = i - Paj + Σi - P+λ+δj = i - P+λaji > 2 P (3)

其中,1 < λ < P < n. 与已有的混沌序列二值化方法比较,文中方法在比较过程中增加了若干参数,从而扩大了生成二值混沌序列的密钥空间, 同时这种错位比较的方法能对更多的数值进行比较, 更有效地增加了算法的安全性。

2. 4. 2 序列性能分析

(1) 随机性分析

根据Golomb 随机性公设,为保证伪随机序列具有尽可能好的随机性, 必须对所生成二值序列的随机性进行检测,即频数检验和序列检验:频数检验:保证序列中0 和1 的个数大致相等,这也是二值序列具有随机性的最基本保证,即需要计算: χ21=( n1 - n0) 2n2 (4)

其中, n0 为二值序列中0 的个数, n1 为二值序列中1的个数. 事实上,频数检验的结果并不能完全描述伪随机序列的性能, 因为存在完全无随机性的序列且χ21为0. 因此,只需满足基本要求即可认为伪随机序列性能良好. 为此可取5 % 的显著水平,与1 自由度的χ2 分布比较,χ21的值为3. 84 ,只要得到的值不大于3. 84 ,则认为序列具有较好的随机性.序列检验:对二值序列内00 ,01 ,10 ,11 (二维均匀性) 出现次数进行统计,即需要计算:

12

χ22=4n - 1 Σ1i = 0 Σ1j = 0( ni , j) 2 -2n Σ1i =0( n2i+ 1)(5) 其中, ni , j ( i , j ∈{ 0 ,1} ) 表示二值序列中“ij”的个数.通过表1 的实验结果可以看出, 这些方法均通过了基本的频数检验. 而在序列检验中,基于错位的文中方法优于已有方法, 而由于它还具备良好的非线性,则难以通过截获的二值序列获得关于原始混沌序列的分布情况, 从而有效提高了生成二值序列算法的安全性. 此外, 本方法实用性较高, 只需O ( P) 的存储空间,即便对于大整数,也不需要冗长的大数除法计算. 表1 三种离散化方法效果比较

(μ = 0 , a0 = 0. 7 , P = 6 , λ = 3 , δ = 2)

文献[ 9 ] 文献[ 10 ] 文献[ 11 ] 文中方法 序列长度n 10000 10000 10000 10000 0 的个数n0 4980 4986 5047 4971 1 的个数n1 5020 5014 4953 5028 00 的个数n00 2484 2485 2495 2465 01 的个数n01 2495 2500 2530 2506 10 的个数n10 2496 2501 2530 2507 11 的个数n11 2524 2513 2444 2521 频数检验χ21

< 10 - 4 < 10 - 4 < 10 - 4 < 10 - 4 序列检验χ22

- 0. 8113 - 0. 9209 - 0. 7341 - 0. 6136 (2) 初值敏感性分析

必须对混沌系统的初始条件进行微小变化, 从而完成初值敏感性分析. 为此可统计所得到的二值序列中相应位置上的0 和1 的值的变化情况, 位变化率越接近50 % , 说明该系统对于初始条件越敏感.通过表2 的实验结果可知, 文中方法具有对混沌系统初始条件的敏感性. 由于初始值发生微小变化时,所生成的二值序列中近半数的位发生了变化,这说明它较为接近理想的混沌系统对初始条件的敏感性要求。

初值敏感性分析

序列长度20000 20000 10000 10000 初始参数a10

0. 7 0. 9 0. 7 0. 9 初始参数a20

13

0. 70001 0. 9000001 0. 70001 0. 9000001 位变化率50. 22 % 50. 18 % 50. 14 % 50. 24 %

14

第3章 加密实验与效果

根据文中提出的数字图像加密算法,给出对具体图像的加密结果和恢复效果.通过实验结果可知,基于位运算的数字图像加密算法的加密结果和恢复效果良好,而且当恢复过程中混沌系统的初始条件发生微小的改变时,实验中对位异或恢复过程中的混沌系统的初始条件相比于加密过程改变0. 000 000 01 ,相应的解密过程并不能恢复出加密图像. 因此,该加密算法具备较好的安全性.

15

第4章 结束语

文中提出了一种基于位运算的数字图像加密算法. 该算法主要分为基于位运算的置乱加密和基于位运算的异或运算加密两个过程,由于整个加密过程均基于数字图像灰度值的二值化矩阵进行的,所以能保证加密过程具有较好的安全性.

16

参 考 文 献

[ 1 ] 杨银堂,朱樟铭,朱臻. 高速CMOS 数据转换器[M] . 北京:科学出版社,2006. [ 2 ] 黄永安,马路,刘慧敏. Matlab 7. 0/ Simulink 6. 0 建模仿真开发与高级工程应用[M] . 北京:清华大学出版社,2005.

[ 3 ] 郑晓燕,王洪利,仇玉林. 流水线ADC 系统级仿真[J ] . 电子器件,2006 ,29 (4) :1288 - 1291.

[ 4 ] Behzad Razavi. Design of analog CMOS integrated circuits[M] . New York : McGraw - Hill ,2003.

[ 5 ] Tingqian Chen , Bingkun Yao , J un Xu ,et al. A systematicerror model of high - resolution pipelined analog - to - digi2tal converters[J ] . IEEE ,2006 ,2(6/ 9) :158 - 161.

[ 6 ] Shaoshi Yan , Xi Tian , Xin Zhao , et al. Behavioral modelof data acquisition system by using simulink [ C]/ / 7th In2ternational Conference on ASIC. Guilin : IEEE Inc. ,2007 :1273 - 1276.

[ 7 ] 陈霞,张鹤鸣. 12 位50Msps 流水线A/ D 转换器的研究与设计[M] . 西安:西安电子科技大学,2007.

[ 8 ] Fang Bing , Wang Donghui , Zhang Tiejun , et al. Model2ing and simulation of an open - loop architecture ADC[C]/ / 7th International Conference on ASIC. Guilin : IEEEInc. , 2007 :1193 - 1196. [ 9 ] 崔得龙,肖明,左敬龙. 一种基于分数阶傅里叶变换的改进图像加 密算法[J]. 成都信息工程学院学报,2010,25( 1) : 22-25. [ 10 ] 王银花,柴晓东. 基于分数阶傅里叶变换的混沌图像加密方法 [J]. 计算机工程,2007,33( 12) : 172-174.

[ 11 ] 杨倬,冯久超,方勇. 一种基于混沌和分数阶傅里叶变换的图像加 密算法[J]. 计算机科学,2008,35( 9) : 239-240,273.

[ 12 ] 陶然,邓兵,王越. 分数阶傅里叶变换及其应用[M]. 北京: 清华大

17

学出版社,2009: 12-15.

[ 13 ]LI Tian-yan,YORKE J A. Period three implies chaos [J]. The American

Mathematical Monthly,1975,82( 10) : 985-992.

[ 14 ] YE Guo-dong. Image scrambling encryption algorithm of pixel bit

based on chaos map [J]. Pattern Recognition Letters,2010,31 ( 5) : 347-354.

[ 15 ]HENNENLLY B M,SHERIDAN J T. Image encryption techniques based on the fractional Fourier transform[C]/ /Proc of SPIE Vol. 5202 Optical Information System. Bellingham,WA: Bahram Javidi, Demetri Psaltis,2003: 76-87.

18

附录

1. 涉及到的程序代码

加密程序代码如下:

clear;clc;

x=imread('long.bmp','bmp'); %

[a b c]=size(x); %

N=a*b; %

m(1)=input('请输入密钥: '); %

disp('加密中...'); 

读取图像信息 将图像的大小赋给a b c 定义变量N并赋值 用户输入加密密码 显示提示信息

for i=1:N-1 %进行N-1次循环 m(i+1)=4*m(i)-4*m(i)^2; %循环产生密码 end

m=mod(1000*m,256); 00*m除以256的余数

m=uint8(m); %强制转换为无符号整型

n=1; %定义变量n for i=1:a for j=1:b

e(i,j)=bitxor(m(n),x(i,j)); %将图像信息藏在e(i,j)矩阵中进行异或运算

n=n+1; end end

imwrite(e,'加密后的long.bmp','bmp'); %显示解密成功提示信息

20

disp('加密成功');

winopen('加密后的long.bmp'); %显示加密后图片

解密程序代码:

clear;clc;

x=imread('加密后的long.bmp','bmp'); %

[a b c]=size(x); %a b c

21

读取图像信息 将加密后图像的大小赋给

N=a*b;

m(1)=input('请输入密钥: '); %用户输入预设加密密码

disp('解密中');

for i=1:N-1 %进行N-1次循环

m(i+1)=4*m(i)-4*m(i)^2; %循环产生原密码 end

m=mod(1000*m,256);

m=uint8(m); n=1; for i=1:a for j=1:b

e(i,j)=bitxor(m(n),x(i,j)); % m(n)xor(m(n)xor x(i,j))==x(i,j)不带进位加法 半加运算

22

n=n+1; end end

imwrite(e,'解密后的long.bmp','bmp'); %lena.bmp

disp('解密成功'); %

winopen('解密后的long.bmp'); % 1. 运行示例

加密前的原图如下所示:

23

将解密的图像输出命名为显示解密成功提示信息 显示解密后图片

加密后的图像如下图:

运行程序是输入的密码:

运行结果如下:

24

加密后图片如下:

解密后的图像如下图:

运行解密程序输入加密时的密码:

25

解密后的图片:

26

本文来源:https://www.bwwdw.com/article/yu5p.html

Top