一种矩形数字图像三维对称加密方法与流程

文档序号:17741702发布日期:2019-05-24 20:11阅读:361来源:国知局
一种矩形数字图像三维对称加密方法与流程

本发明涉及一种矩形数字图像三维对称加密方法,属于信息安全领域。



背景技术:

兼具拍照功能和上网功能的智能终端设备已经成为生活的必需品。人们习惯将图像通过聊天软件发给朋友,或将个人图像存储到网上云平台。因此图像安全越来越重要。一些传统的文本加密算法,如des、aes、rsa,可以用来加密图像。但在实际处理时,由于图像的内在特征,如相邻像素具有很强的相关性、密图解密时容许部分失真等,直接使用文本加密算法加密图像可能会带来安全风险。

采用混沌映射随机改变图像像素的位置,使得图像相邻像素间的相关性被破坏。既可以单独用来加密,也可以作为其他加密算法的一个部分。不过在使用时要解决(1)适用性问题——大部分混沌映射只能置乱正方形图像。(2)安全性问题——映射仅改变图像像素位置没有改变像素值,不能抵御明文攻击。



技术实现要素:

针对上述问题,本发明提供一种矩形数字图像三维对称加密方法。加密对象为常见的矩形图像,可同时置乱矩形图像像素位置和改变图像像素值,密钥空间更大,安全性更高。

加密包括如下步骤:

步骤一,根据像素值为二进制表示的特点,将像素值分为8个部分。全部像素的某一部分构成1个图层,共8个图层。再将这些图层逐一平铺后,连接为一个原图8倍大的新矩形图像。

通常用十进制来表示像素a(i,j)的值。假设原始的矩形图像是k色灰度图,大小为n×m,如果转换为二进制数,计算公式为a(i,j)=∑an(i,j)×2nn=0,1,…,log2k-1。

16位、32位、64位的灰度图或者彩色图像均可以转换为二进制。注意到数字图像的二进制位数是8的倍数,因此可以将像素值的十进制数分割为8个部分。比如8位灰度图的每个部分ak(i,j)都是0或者1,16位灰度图的每个部分是0或者1组成的2位数等。如果把每一部分依次拿来形成一个图层,则原图像可以分解为8个图层。

步骤二,设计一个能处理矩形图的二维混沌映射对新图进行图像置乱。映射原理:先将图像分成三个部分矩形和两个直角三角形。再按照左右方向,逐一将每个像素插入下一列相邻像素之间,重复上述过程图像被拉伸为一个像素行。然后再对像素行进行折叠,生成矩形密图。图像加密核心算法由映射一和折叠公式组合、映射二和折叠公式组合。

二维混沌映射的原理如下:

若矩形图像大小为n×m,其中n,m是整数,且m>n,a(i,j)是原图中的像素点,b(i,j)是密图像素点,其中i=0,1,…,n-1,j=0,1,…,m-1,l(k)是排列的像素行,其中k=0,1,…n×m-1。映射一的公式:

(1)当j≥i时,若j<n且j-i为偶数有:l[2i+(j-i)×n-(j-i)×(j-i-1)/2]=a(i,j)

若j<n且j-i为奇数时有:l[2i+1+(j-i-1)×n-(j-i-1)×(j-i-2)/2]=a(i,j)

若j≥n且j-n为偶数时有:l[(n+1)×n/2+n×(j-n)+2i]=a(i,j)

其中若m-n为奇数,则当j=m-1时,有:l[(n+1)×n/2+n×(j-n)+i]=a(i,j)

若j≥n且j-n为奇数时有:l[(n+1)×n/2+n×(j-n-1)+2i+1]=a(i,j)

(2)当i>j时,若i-j为偶数有:

l[m×n-n×(n-1)/2+2×j+1+(i-j-2)×n-(i-j-1)×(i-j-2)/2]=a(i,j)

若i>j,当i-j为奇数时有:

l[m×n-n×(n-1)/2+2×j+(i-j-1)×n-(i-j)×(i-j-1)/2]=a(i,j)

映射二的公式如下:

(1)当j≥i时,若j<n且j-i为偶数时有:l[2i+(j-i)×n-(j-i)×(j-i-1)/2]=a(i,m-1-j)

若j<n且j-i为奇数时有:l[2i+1+(j-i-1)×n-(j-i-1)×(j-i-2)/2]=a(i,m-1-j)

若j≥n且j-n为偶数时有:l[(n+1)×n/2+n×(j-n)+2i]=a(i,m-1-j)

其中若m-n为奇数,则当j=m-1时,有:l[(n+1)×n/2+n×(j-n)+i]=a(i,m-1-j)

若j≥n且j-n为奇数时有:l[(n+1)×n/2+n×(j-n-1)+2i+1]=a(i,m-1-j)

当i>j时,若i-j为偶数有:

l[m×n-n×(n-1)/2+2×j+1+(i-j-2)×n-(i-j-1)×(i-j-2)/2]=a(i,m-1-j)

若i>j,当i-j为奇数时有:

l[m×n-n×(n-1)/2+2×j+(i-j-1)×n-(i-j)×(i-j-1)/2]=a(i,m-1-j)

折叠的公式:b(i,j)=l(i×m+j)。

步骤三,将该密图按照第一步的反过程进行组合,转换为原始图像大小的密图。

加密过程既改变了图像像素值又改变了像素位置,具有一定的安全性。

附图说明

图1本发明中加密过程图;

图2本发明中图像三维处理过程;

图3本发明中二维混沌映射原理(a)映射一(b)映射二;

图4本发明中二维映射的例子(a)映射一(b)映射二;

图5本发明四个加密实例及图像直方图;

图6本发明四个加密实例相邻像素相关性图;

具体实施方式

图像过程如图1所示。首先根据像素值为二进制表示的特点,将像素值分为8个部分。全部像素的某一部分构成1个图层,共8个图层。再将这些图层逐一平铺后,连接为一个原图8倍大的新矩形图像;然后设计一个能处理矩形图的二维混沌映射对新图进行图像置乱。映射原理:先将图像分成三个部分矩形和两个直角三角形。再按照左右方向,逐一将每个像素插入下一列相邻像素之间,重复上述过程图像被拉伸为一个像素行。然后再对像素行进行折叠,生成矩形密图;最后将该密图按照第一步的反过程进行组合,转换为原始图像大小的密图。

图像三维处理过程如图2所示。当k=512时,有log2k=8,图像是8位灰度图,有:

a(i,j)=∑ak(i,j)×2i=a0(i,j)×20+a1(i,j)×21+a2(i,j)×22+a3(i,j)×23+a4(i,j)×24+a5(i,j)×25+a6(i,j)×26+a7(i,j)×27

其中a0(i,j),a1(i,j),…,a7(i,j)是像素的8个二进制数。

二维混沌映射映射一原理如图3所示。首先,将矩形图像a分解为矩形c和直角三角形d、e三个部分。然后,将直角三角形d中对角线方向的像素按从左到右的方向,依次插入到平行的两个相邻像素之间。

以大小为4×6的图像为例如图4(a)所示,(0,0)插入到(0,1)之前,(1,1)插入到(0,1)和(1,2)之间,(2,2)插入到(1,2)和(2,3)之间…再将矩形c中的列像素插入到相邻的列像素之间,如图3(a),(0,4)插入到(0,5)之前,(1,4)插入到(0,5)和(1,5)之间,(2,4)插入到(1,5)和(2,5)之间…将直角三角形e中对角线方向的像素依次插入到平行方向的两个相邻像素之间,如图3(a),(1,0)插入到(2,0)之前,(2,1)插入到(2,0)和(3,1)之间,(3,2)插入到(3,1)之后…经过上述操作后,原图被拉伸为一个像素行(0,0),(0,1),(1,1),(1,2),(2,2)…,最后可以将其折叠为4×6的图像b。

图3(b)是映射二原理图。首先,将矩形图像a分解为矩形f和直角三角形g、h三个部分。然后采用从右到左的方式进行插入,如图4(b)所示,原图被拉伸为像素行(0,5),(0,4),(1,4),(1,3),(2,3),…最后可以将其折叠为4×6的图像b’。

可以看到,经过该映射之后,原图像的像素位置几乎全部发生了改变。

利用4个大小为240×256的8位灰度图进行测试。将加密密钥的奇数位设计为映射一和折叠的次数、将加密密钥的偶数位设计为映射一和折叠的次数。

假设密钥key都是123456,加密测试的效果如图5所示,未优化程序的加密时间分别为0.09s,0.09s,0.09s,0.09s;解密时间为0.08s,0.08s,0.07s,0.08s(编程语言为vc++6.0,电脑cpu为intel’scorei51.6ghz,内存4g,操作系统是windows10)。

由图5可以看到加密后的密图已经肉眼无法识别,从图像直方图可以进一步看到,加密后图像的像素值已经完全发生改变,统计特性与原始图像截然不同。

图6是四个原图和密钥为“123456”时密图的相邻像素相关性图。可以看到经过加密,图像相邻像素间的相关性被彻底的破坏。加密前后水平、垂直、对角线方向相关系数还可以参照下表:

另一个指标r-m相关性,如下表所示:

可以看到加密后,像素点相邻区域内像素点的相关程度减少了70%左右。说明图像置乱效果好,原图的特征被掩盖。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1