混沌密码与数字图像加密应用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验项目与实验报告(1)学科:信息与网络安全学号:20134088141姓名:羊波时间:11月3日实验项目:混沌密码与数字图像加密应用、信息隐藏实验目的:利用Matlab软件基于Logistic映射的加密算法对图像进行加密和解密,以及利用DEVC++软件、Excel表格绘制图像基于Logistic映射的算法产生的混沌现象。理解Logistic加密算法,掌握加密过程。一、实验步骤:1.完成实验教程1-32.登录网络平台修改作业发布密码,上传实验报告一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λ≤3时,该模型性态简单;当3λ≤3.75时,系统处于倍周期状态;当λ3.57时,系统处于混沌状态。二、实验步骤下面以一副256×256的图像test.gif为例,利用MATLAB软件进行图像加密,加密程序如下:%混沌加密Logisitc加密算法,图片像素为256*256,可直接放在work子文件夹中clc;clearall;globalM;globalN;globalXimage;globalYimage;globalsy;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;endendkey2=0.2;for(i=1:M)for(j=1:N)key2=key*key2*(1-key2);b(i,j)=key2;endendx=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%置乱度globalM;globalN;globalXimage;globalYimage;key1=input('请输入密钥key1:');key=4;for(i=1:M)for(j=1:N)key1=key*key1*(1-key1);a(i,j)=key1;endendkey2=input('请输入密钥key2:');for(i=1:M)for(j=1:N)key2=key*key2*(1-key2);b(i,j)=key2;endendx=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图片②打开Matlab软件并把上面的加密程序输入软件环境窗口,如下图2所示:图2在Matlab中输入的编程③程序输入完成后,按回车键,程序会运行得出5张图片,分别为加密前的原图和加密后的图片、加密前的直方图和加密后的直方图。如下图3、图4、图5、图6所示:图3加密前的原图图4加密后的图片图5加密前的直方图图6加密后的直方图说明:加密后的灰度直方图分析可以用来衡量加密算法的扰乱性。上图3、图4、图5、图6是加密前后的图像以及它们的直方图的对比。可见,加密后的直方图呈均匀分布,未保留任何明文信息。图6加密后的直方图的图像越均匀说明混沌效应越好,上图6总体上来说是均匀的,只是在编程的时候考虑的只是黑白色的点,所以直方图看起来全部的点不是绝对的均匀。解密过程:⑦如果想得到原图(解密),必须在MATLAB界面窗口输入两个密钥,“请输入密匙key1:0.1请输入密匙key2:0.2”;如下图7所示:图7解密之后得到的原图从上图可以看出,加密后的图像没有留下原图的痕迹,而解密后的图像看不出差别,此方法加密效果良好。换一副带有彩色256×256的图像111.gif为例,利用MATLAB软件进行图像加密,加密程序跟上面的差不多,只是把图片名称改了,步骤以上的也一样如下所示:①把修改图片名称后的程序输入Matlab软件中,如下图8所示:图8修改图片的名称②运行之后得出来的结果如下图9、图10、图11、图12所示:图9加密的原图图10加密后的图图11加密前的图像直方图图12加密后的图像直方图图13解密后的到的图像说明:由上图9、图10、图11、图12、图13可知,彩色图片加密后的图片跟原先用的黑白图片加密的图像一样都是由黑白的点组成的。而且彩色图片加密后的图像直方图总体上来说也是符合混沌效应现象的。C语言代码实现混沌效应,加密程序如下://简单模拟LOGISTIC模型C++源程序#includeiostream#includemath.h#defineN300usingnamespacestd;voidfun(floatx0,floatu,intk,floatresult[]){inti=0;floattemp_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--;}}intmain(){inti,k;floatx0,u,*result,*ratio,sum=0.0,ave,s=0.0,st;coutHowmanylogisticsequencedoyouwannaoutput?endl;cink;while(k1||kN){coutInputapositiveintegerfrom1toN:endl;cink;}result=newfloat[k];ratio=newfloat[k-1];coutInputafloatvaluebetween0and4:endl;cinu;coutInputafloatvaluebetween0and1:endl;cinx0;fun(x0,u,k,result);for(i=0;ik;i++){coutresult[i]endl;}}①据老师提供的C语言代码,为了方便后续的数据统计工作,进一步更改代码的输出格式,然后把修改后的代码输入DEVC++软件环境窗口中。如下图1中绿色圈圈所示:图1修改输出语句后的代码②然后点击编译并运行按钮,在弹出来的窗口中输入你想要的数据数量100、λ的取值(λ≥3.57)3.59还有初始值0.23456,并回车后得出数据。如下图2所示:图2运行得出的数据③接下来把得出的数据复制到Word文档中并绘制成表格的形式以便导入Excel中统计数据。如下图3所示:图3通过拷贝在Word中的数据④然后再利用复制、粘贴功能把数据导入Excel中,并绘制折线图,观察混沌效应。如下图4所示:图4Excel中的数据与绘制的折线图说明:从图4折线图中可以看出图像中点的分布总体上是满足混沌现象的。二、实验原理(信息隐藏)1.数字信息隐藏技术已成为信息科学领域研究的一个热点。被隐藏的秘密信息可以是文字、密码、图像、图形或声音,而作为宿主的公开信息可以是一般的文本文件、数字图像、数字视频和数字音频等。2.信息隐藏系统的模型可以用下图1-1来表示。我们把待隐藏的信息称为秘密信息,它可以是版权信息或秘密数据,也可以是一个序列号;而公开的信息则称为宿主信息,如视频、音频片段等。这种信息隐藏过程一般由密钥来控制,通过嵌入算法将秘密信息隐藏于公开信息中,而隐蔽宿主则通过通信信道传递,然后对方的检测器利用密钥从隐蔽宿主中恢复/检测出秘密信息。图1-1信息隐藏系统模型由此也可以看出,信息隐藏技术主要有下述两部分组成:(1)信息嵌入算法(编码器),它利用密钥来实现秘密信息的隐藏。(2)隐藏信息监测/提取算法(检测器),它利用密钥从隐藏宿主中检测/恢复出秘密信息。在密钥未知的前提下,第三者很难从隐藏宿主中得到或删除,甚至发现秘密信息。实验步骤如下:1、利用EasycodeBoyPlus加密工具对文件进行加密、解密(可对多个文件进行加密):①首先打开EasycodeBoyPlus加密工具实验环境窗口,然后点击加密命令把需要的加密文件添加到其中,并输入密码,确认密码,然后点击开始加密,最后会弹出加密成功的窗口,如下图1所示:图1对文件加密成功编码器检测器秘密信息宿主信息密钥隐蔽宿主密钥秘密信息宿主信息②接下来对刚刚加密的文件进行解密。只要记住刚刚在加密时候设立的密码就可以进行解密,同样的在EasycodeBoyPlus加密工具实验环境窗口点击解密命令,把要解密的文件拖入其中,并输入加密时设的密码,点击开始解密命令即可,如下图2所示:图2解密成功2、利用EasycodeBoyPlus加密工具将文件编译为EXE自解密文件:①在EasycodeBoyPlus加密工具实验环境窗口点击编译EXE命令,选择“将文件编译为EXE自解文件”按钮,并把要编译的EXE文件添加在其中,输入密码,确认密码,然后点击开始编译/加密命令即可,如下图3所示:图3加密成功②现在已经很明显的发现文件已成了应用程序,并在打开的时候要要输入之前设的密码,然后勾选解密后删除自解文件即可自解密并得到原来的文件类型,如下图4、图5、图6所示:图6解密过程图7自解密完成图8得到原来的文件类型说明:根据多次实验得出对EXE文件加密保护以及去除EXE文件密码保护或自解密壳操作步骤其实是差不多的。3、利用EasycodeBoyPlus加密工具对文件进行嵌入:①以下是两张不同格式的图片,把静态图(左)嵌入动态图(右)中,如下图1所示:图1嵌入之前的原图②在EasycodeBoyPlus加密工具实验环境窗口点击文件嵌入按钮,并把静态图拖入作为记住文件,把动态图拖入作为嵌入文件;并设置密码,确认密码,然后点击嵌入文件命令即可嵌入成功,并发现嵌入文件(动态图)通过我们的肉眼看不出有

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功