matlab 实现图像加密
<STRONG>基于傅里叶变换的图像加密技术研究<BR><BR>具体是将一幅图像用fft 变换到频域 <BR><BR>在频域中进行加密 我考虑的是通过随机相位来加密的方法,请问用matlab怎样实现<BR><BR>加密后在通过 ifft 得到加密后的图象<BR><BR>请给一些思路和建议</STRONG> up回复:(Louislb)matlab 实现图像加密
<P align=center><B><FONT face=宋体 size=5>一种基于m序列的图像随机加密与实时传输方案</FONT></B></P><P align=center><FONT face=宋体 size=3><B>解鲲,乌旭</B></FONT></P>
<P align=center><FONT face=宋体 size=3><B>(大连理工大学 电信学院辽宁 大连116024)</B></FONT></P>
<P><FONT face=宋体 size=3> <B> 摘要</B>:提出了一种基于m序列的图像随机加密与实时传输方案。在加密时用m序列构造的相位函数取代了双相位编码方法中用作密钥的随机相位掩模,极大地压缩了密钥的数据量,使密钥的传送更加方便快捷。并在前有基础上加以改进,可以轻松地加密彩色图像。在完成加密后,可实时地在网络上传送加密图像,在接收端进行解密。最后进行了计算机模拟实验,实验结果表明该方案是可行的,并且易于实际应用。<BR> <B> </B></FONT><B></B><FONT face=宋体 size=3><B>关键词</B>:m序列; 图像加密; 图像传输;随机加密?</FONT></P>
<P><B><FONT face=宋体 size=4>引言<BR></FONT></B><FONT face=宋体 size=3> 近年来,互联网飞速发展,极大地方便了人们的生活和工作。在网络上传送音频、视频和图像等多媒体信息的需求也日益增多,由此信息的安全与保密显得尤为重要。对于图像信息,加密算法主要有2类:<BR> (1)将图像文件当作普通的二进制数据文件,用纯密码算法进行加密处理。<BR> (2)图像象素地址扰乱加密算法。<BR> </FONT><FONT face=宋体 size=3>但这两类算法都没有考虑到图像信息的特征。相对而言,</FONT><FONT face=宋体 size=3>Javidi等人采用双相位编码技术<SUP>[1,2]</SUP>,用随机相位掩模对图像的相位信息加密,这样得到的加密图像具有更好的保密性能。但如果采用随机相位掩模就必须对其进行保存以用于解密,从而给解密带来不便,不易实现不同图像用不同密钥加密,而且密钥的数据量比较大,传送起来比较费时。<BR> </FONT><FONT face=宋体 size=3>针对以上问题,本文提出一种基于m序列的图像随机加密与实时传输方案<SUP>[3]</SUP>。在加密时用m序列构造的相位函数取代了Javidi等人双相位编码方法中用作密钥的随机相位掩模。用产生m序列的初始参数作为密钥,对不同图像根据不同的初始条件可获得不同的密钥用来加密。完成加密时,将加密图像和初始参数发送到接收端。解密时分别从相应的初始参数获得重构的m序列,并产生相应的解密密钥进行解密。从而极大地压缩了密钥的数据量,不再有随机相位列阵存储和传送的困难。?<BR></FONT><B><FONT face=宋体 size=4>2图像加密?<BR></FONT><FONT face=宋体 size=3>2.1m序列<BR></FONT></B><FONT face=宋体 size=3> </FONT><FONT face=宋体 size=3>伪随机序列(Pseudo Random Sequences)既有随机序列的随机特性,又有随机序列所不具备的规律性,可以方便地重复和产生。窃密者若要获取信息就必须准确知道所用伪随机序列的长度、种类和初始状态,但不同长度的伪随机序列有无数种,同一长度的伪随机序列当级数较大时也有很多种,所以窃密是比较困难的。因此伪随机序列在信息安全上有着广泛地应用。m序列就是一种较为常用的伪随机序列。<BR> </FONT><FONT face=宋体 size=3>m序列是线性反馈移位寄存器的最大长度序列,是预先可确定、能重复产生的伪随机序列。移位寄存器是由n个串接的寄存器、1个移位时钟发生器以及1个由模2加法器组成的反馈逻辑线路所构成的,每个寄存器称为移位寄存器的级,每一级只能为0和1两种状态中的一种。移位时钟到来时使每一级的状态向下一级移动,成为下一级的新状态。<BR> </FONT><FONT face=宋体 size=3>带有反馈逻辑线路的移位寄存器其末级输出序列满足反馈逻辑函数:<BR> <IMG src="http://www.bjx.com.cn/files/wx/xddzjs/2003-8/23-1.jpg" border=0><BR>其中:⊕表示模2加法运算,C<SUB>i</SUB>=1或 0 ( i=1,2,…,</FONT><FONT face=宋体 size=3>n ),视第i级是否参加模2运算而定。与反馈逻辑函数相对应的多项式叫作该反馈移位寄存器的特征多项式,表达式如下:<BR> <IMG src="http://www.bjx.com.cn/files/wx/xddzjs/2003-8/23-2.jpg" border=0><BR></FONT> <FONT face=宋体 size=3>当特征多项式为本原多项式时,序列发生器成为生成最长周期的m序列发生器。其周期?T与阶数n的关系为:T=2<SUP>n</SUP>-1?。可以通过查表来寻找本原多项式<SUP>[4]</SUP>。知道了m序列的本原多项式,就可以确定产生该序列的反馈逻辑函数。生成m序列还需有相应的移位寄存器初始值,也就是说,一个本原多项式和相应的移位寄存器初始值决定了一个m序列。改变移位寄存器的初始值(全0除外)可以得到不同的m序列。?<BR><B>2.2加密原理<BR></B> </FONT><FONT face=宋体 size=3>设f(x ,y)表示待加密的图像,n(x ,y)表示均匀分布在(0,2π)上的随机函数。应用在空间域中,x,y为空间域坐标。加密时,输入的原始图像f(x ,y)首先被随机相位函数exp[j<SUB>n</SUB>(x ,y)]所调制,完成空间域的加密。然后对调制后的图像进行傅里叶变换,在频谱面上用另一个相位函数exp[j<SUB>b</SUB>(α,β)]对其滤波,其中b(α,β)是由</FONT><FONT face=宋体 size=3>m序列构造的函数,α、β为频率域坐标,b(α,β)中的元素分布在(0,2π)</FONT><FONT face=宋体 size=3>。最后的加密图像变为:<BR>??e(x,y)={f(x,y)exp[jn(x,y)]}*h(x,y)(3)<BR>其中:*表示卷积运算,h(x,y)为exp[j b(α,β)]的逆傅里叶变换。<BR> 二维卷积运算量比较大,这里采用快速卷积算法可极大地提高运算速度。这样,2个相位函数?exp[jn(x ,y)]和exp[jb(α,β)]使输入的原始图像f(x,y)转变成为稳定的白噪声e(x ,y),从而完成了加密。<BR> </FONT><FONT face=宋体 size=3>为了对图像f(x ,y)解密,将加密图像e(x ,y)用相位函数exp[-jb(α,β)]滤波,该函数就是解密的密钥。因为:<BR><IMG src="http://www.bjx.com.cn/files/wx/xddzjs/2003-8/23-3.jpg" border=0><BR></FONT> <FONT face=宋体 size=3>所以解密后的函数变为:<BR><IMG src="http://www.bjx.com.cn/files/wx/xddzjs/2003-8/23-4.jpg" border=0></FONT><FONT face=宋体 size=3><BR>提取该函数的幅值f(x,y),就完成了对加密图像的解密。?<B><BR>2.3彩色图像加密<BR></B> </FONT><FONT face=宋体 size=3>现有的很多系统处理彩色图像信息时,需要分别对彩色图像的红、绿、蓝3个分量分别进行处理,实现起来比较麻烦。本文通过转换图像的类型,将RGB图像转换为索引(index)图像,方便快捷地实现了对彩色图像的加密与解密。<BR> RGB图像是m×n×3的三维数组,在前文提到的加密算法当中的各种运算都是针对二维矩阵的,所以无法实现对彩色图像的加密。而索引图像则满足这个要求。索引图像包括图像矩阵与颜色图数组,其中颜色图是按图像中颜色值进行排序后的数组。对于每个象素,图像矩阵包含的值就是颜色图数组中的索引。索引图像的图像矩阵是二维的,在加密时仅对图像矩阵加密,保留颜色图数组不变,解密时恢复原来的图像矩阵,利用其与颜色图数组间的索引,恢复彩色图像。也就是说在加密时,先将图像从RGB图像转换为索引图像;在解密时,再将图像从索引图像恢复为RGB图像,中间的过程则与对二值和灰度图像的操作完全一致。?</FONT><B><FONT face=宋体 size=4><BR>3图像传输<BR></FONT></B><FONT face=宋体 size=3> </FONT><FONT face=宋体 size=3>本文图像的加密与解密是在Matlab中实现的,而加密图像的传输则在VB中完成。因此要在网络上实时传输加密图像就要实现Matlab与VB的无缝集成。这里借助ActiveX自动化技术来集成VB与Matlab。Microsoft把所有以COM为基础的技术统称为ActiveX技术。ActiveX自动化是</FONT><FONT face=宋体 size=3>ActiveX的一个协议,允许应用程序或组件控制另一个应用程序或组件的运行。这里用VB控制和使用Matlab。<BR> </FONT><FONT face=宋体 size=3>图像传输是在VB 6.0下通过其Winsock控件完成的。Winsock控件封装了所有烦琐的技术细节,只需通过设置控件的属性并调用其方法就可以轻易地与远程计算机连接,并可以双向交换彼此的数据。在这里采用TCP协议进行图像传输。<BR> </FONT><FONT face=宋体 size=3>本文传送的加密图像和密钥数据是在Matlab中保存的mat文件。在发送端,将该mat文件以二进制数据的形式读入到一个数组中并发送过去;在接收端,将接收到的数据读入到新生成的</FONT><FONT face=宋体 size=3>mat文件中,接收完毕时显示收到的加密图像,然后调用Matlab对图像解密,并显示解密图像。为了提高传输效率,可以在发送端对图像文件进行压缩,在接收端再对其解压缩。此处利用小波变换来对图像进行压缩。有关这方面的文献已发表很多<SUP>[</SUP><SUP>5,6]</SUP>,这里就不再做详细讨论。?</FONT><B><FONT face=宋体 size=4><BR>4实验结果<BR></FONT></B><FONT face=宋体 size=3> </FONT><FONT face=宋体 size=3>按照前文所提的加密方法,以灰度图像Lena(256×256×8 B)和彩色图像Peppers(256×256</FONT><FONT face=宋体 size=3>×24 B)为样本进行了计算机模拟,并且在局域网内模拟了传输过程。加密过程是在P 4 1.5 G的计算机上完成的,加密时间为343 ms,解密时间为188 ms,可见该方案的加密解密速度相当快。具体结果如图1和图2所示。<BR> </FONT><FONT face=宋体 size=3>对加密图像的安全性进行测试,由错误密钥解密得到的图像为噪音信号,没有原始图像的任何印记,如图1(d)所示。即使攻击者同时获取了原始图像f(x,y)和加密图像e(x,y)的信息,也无法得到加密密钥,因为由式(3)可知:<BR>??e(x,y)={f(x,y)exp[jn(x,y)]}*FFT<SUP>-1</SUP>(exp[jb(α,β)])(6)??</FONT></P>
<P align=center><FONT face=宋体 size=3><IMG src="http://www.bjx.com.cn/files/wx/xddzjs/2003-8/24-1.jpg" border=0><BR><IMG src="http://www.bjx.com.cn/files/wx/xddzjs/2003-8/24-2.jpg" border=0><BR><IMG src="http://www.bjx.com.cn/files/wx/xddzjs/2003-8/24-3.jpg" border=0><BR><IMG src="http://www.bjx.com.cn/files/wx/xddzjs/2003-8/24-4.jpg" border=0></FONT></P>
<P><FONT face=宋体 size=3> 在式(6)中,n(x,y) 和b(α,β)对于攻击者来说都是未知的,所以想从f(x,y)和e(x,</FONT><FONT face=宋体 size=3>y)来获得加密函数exp[j b(α,β)]是不可能的,表明该加密方法在已知明文条件下仍是安全的。?图1(e)和(f)与图2(d)和(e)是用正确密钥解密得到的图像,其中图1(e)和图</FONT><FONT face=宋体 size=3>2(d)是在发送端经过压缩,在接收端解压缩得到的解密图像,压缩比为1/16。可以发现图1(f)和图2(e)与原始图像没有任何差别,而图1(e)和图2(d)与原始图像相比失真也不大,视觉效果基本令人满意。这样,在网络上传输经过压缩的加密图像将大大提高通信系统的传输效率。<BR> </FONT><FONT face=宋体 size=3>图3所示为加密图像增加了不同噪声的解密结果,噪声的强度均为10%。在这几种情况下均能正确解密,恢复原始图像,表明该方案具有很强的抗噪声能力。?</FONT><B><FONT face=宋体 size=4><BR>5结论<BR></FONT></B><FONT face=宋体 size=3> </FONT><FONT face=宋体 size=3>本文提出了一种基于m序列的图像随机加密与实时传输方案。在双相位编码的基础上,用m序列构造的相位函数取代了原先用作密钥的随机相位掩模,从而极大地压缩了密钥的数据量,使密钥的传送更加方便快捷。并且通过转换RGB图像为索引图像,实现了对彩色图像的加密。通过ActiveX自动化技术完成Matlab与VB的无缝集成后,即可实时传输加密图像。为了提高传输效率,可以利用小波变换来压缩图像。最后进行了计算机模拟实验,在发送端,原始图像经过加密并且实时传输后,在接收端经过解密可以获取高质量的解密图像。实验结果令人满意,表明该方案可行,并且更加易于实际应用。?</FONT></P>
<P align=center><B><FONT face=宋体 size=4>参考文献</FONT></B></P>
<P><FONT face=宋体 size=3>[1]Refregier P, Javidi B? Optical image encryption based on inputplane and Fourier plane random encoding[J] Opt lett, 1995, 20(7):767~769</FONT><BR><FONT face=宋体 size=3>[2]Yamazaki M,Ohtsubo J?Optimization of?</FONT><FONT face=宋体 size=3> </FONT><FONT face=宋体 size=3>encrypted holograms in optical security systems[J] Opt Eng, 2001, 40(1):132~137<BR></FONT><FONT face=宋体 size=3>[3]周师亮?伪随机序列原理[J].电视技术1997, 6:41~48<BR></FONT><FONT face=宋体 size=3>[4]肖国镇,梁传甲,王育民?伪随机序列及其应用[M]. 北京:国防工业出版社, 1985<BR></FONT><FONT face=宋体 size=3>[5]Antonini M,Barland M,Mathieu P,et al?Image coding using wavelet transform[J].IEEE Trans on image processing, 1992,38(2):244~250<BR></FONT><FONT face=宋体 size=3>[6]周建鹏,杨义先?图像压缩编码中的小波变换技术[J].电路与系统学报,1997,6:58~65??</FONT></P> 楼上的 那篇文章 谁能帮我用 matlab 实现一下<BR><BR>报酬qq 谈~~~qq5757993 <P>顶 大家帮帮忙阿</P> up up T.T
页:
[1]