发明名称 基于动态DNA编码和双混沌映射的图像加密算法
摘要 基于动态DNA编码和双混沌映射的图像加密算法,分为两部分:一部分是通过Lorenz混沌映射产生的混沌序列对图像进行像素位置的置乱;同时,Lorenz混沌映射也作为动态选择DNA运算规则的依据;另一部分是通过Chen超混沌映射和DNA编码对图像进行像素值的置乱;最后通过以上两部分的结合得到图像的加密算法,该算法可以对任意大小的图像进行加密。
申请公布号 CN105956991A 申请公布日期 2016.09.21
申请号 CN201610289828.2 申请日期 2016.05.05
申请人 东北林业大学 发明人 张健;侯德智;任洪娥
分类号 G06T1/00(2006.01)I 主分类号 G06T1/00(2006.01)I
代理机构 代理人
主权项 一种基于动态DNA编码和双混沌映射的图像加密算法,包括以下步骤:输入灰度图像I,大小为M行N列,Lorenz混沌映射的初值x,y,z,Chen超混沌映射的初值x,y,z,q,参数k;输出加密图像I',加密图像的处理过程包括:(1)将灰度图像I转换成大小为M×N的二维矩阵I<sub>1</sub>;(2)根据Lorenz混沌映射公式,x'=a<sub>1</sub>(y‑x);y'=a<sub>3</sub>x‑xz‑y;z'=xy‑a<sub>2</sub>z,其中a<sub>1</sub>=10,a<sub>2</sub>=8/3,a<sub>3</sub>=28,x,y,z为初值,取值范围是大于0的实数,x',y',z'是迭代后产生的值,产生三个序列分别为x={x<sub>1</sub>,x<sub>2</sub>,...,x<sub>M</sub>}、y={y<sub>1</sub>,y<sub>2</sub>,...,y<sub>N</sub>}和z={z<sub>1</sub>,z<sub>2</sub>,...,z<sub>M×N×4</sub>},对这三个序列分别进行如下操作,x(i)=mod(fix(x(i)×10<sup>8</sup>),M)+1,i=1,2,…M,y(i)=mod(fix(y(i)×10<sup>8</sup>),N)+1,i=1,2,…Nz(i)=mod(fix(z(i)×10<sup>8</sup>),8)+1,i=1,2,…M×N×4,其中fix表示向下取整操作,mod表示取余,通过上述公式可将序列x变为[1‑M]的随机数,将序列y变为[1‑N]的随机数,将序列z变为[1‑8]的随机数,根据序列x的值将图像I<sub>1</sub>的每行进行移位,如公式1所示,根据序列y的值将移位后的图像再进行移位,如公式2所示,从而产生新的置乱后的图像I<sub>2</sub>,序列z用来选择DNA加法规则,在权利要求7中说明;<img file="FDA0000981861130000011.GIF" wi="1849" he="534" /><img file="FDA0000981861130000012.GIF" wi="1902" he="607" />(3)将图像I<sub>2</sub>转换成为M×N行8列的二进制二维矩阵I<sub>3</sub>,即每行是一个原始图像像素值的二进制;(4)利用Chen超混沌映射公式x'=a(y‑x);y'=‑xz+dx+cy‑q;z'=xy‑bz;q'=x+k,其中a=36,b=3,c=28,d=16且‑0.7≤k≤0.7,x,y,z,q为初值,取值范围是大于0的实数,x',y',z',q'是迭代后产生的值,产生四个序列,用A、B、C和D表示,序列A、B、D的长度均为M×N,序列C的长度为M×N×8,按照公式A=mod(fix((abs(A)‑fix(abs(A)))×10<sup>10</sup>),8)+1对序列A进行变化,其中fix表示向下取整操作,mod表示取余,abs表示绝对值,按照公式B=mod(fix((abs(B)‑fix(abs(B)))×10<sup>10</sup>),8)+1对序列B进行变化,按照公式C=mod(fix((abs(C)‑fix(abs(C)))×10<sup>10</sup>),10)+1对序列C进行变化,再将变化后的序列C的每一个值进行比较,如果值小于等于5,此值用0替换,如果值大于5,此值用1替换,按照公式D=mod(fix((abs(D)‑fix(abs(D)))×10<sup>10</sup>),8)+1对序列D进行变化,变化后,序列A、B和D的值范围为[1‑8],序列C的值范围为[0‑1];(5)DNA的每个碱基A、C、G、T可以表示成两个二进制,按照A与T互补,C与G互补的原则,DNA编码规则如表1所示,由于序列A的取值范围是[1‑8],按照序列A的每一个值,对应地在表1中选择1‑8种规则中的一种,将I<sub>3</sub>的每一行用该种规则进行编码,I<sub>3</sub>转化成M×N行4列的DNA编码矩阵I<sub>4</sub>;表1<img file="FDA0000981861130000021.GIF" wi="1757" he="367" />(6)将长度为M×N×8的序列C转化成M×N行8列的二进制矩阵I<sub>5</sub>,按照序列B的每一个值,对应地在表1中选择1‑8种规则中的一种,将I<sub>5</sub>的每一行用该种规则进行编码,I<sub>5</sub>转化成M×N行4列的DNA编码矩阵I<sub>6</sub>;(7)针对表1中的DNA编码规则,每一种规则对应一种DNA加法运算,如表2是DNA编码规则1的加法运算规则,表3、表4、表5、表6、表7、表8、表9分别是DNA编码规则2、3、4、5、6、7、8的加法运算规则,权利要求2中的序列z={z<sub>1</sub>,z<sub>2</sub>,...,z<sub>M×N×4</sub>},取值范围为[1‑8],按照序列z的每一个值,对应地在表1中选择1‑8种规则中的一种,再按照对应的加法运算规则,使矩阵I<sub>4</sub>、I<sub>6</sub>进行加法运算,得到矩阵I<sub>7</sub>;<img file="FDA0000981861130000031.GIF" wi="2062" he="894" />(8)按照序列D的每一个值,对应地在表1中选择1‑8种规则中的一种,将I<sub>7</sub>每一行的DNA编码用二进制表示,I<sub>7</sub>转化成大小为M×N行8列的二进制矩阵I<sub>8</sub>;(9)把二进制矩阵I<sub>8</sub>转换成M行N列的十进制二维矩阵I<sub>9</sub>,最后再把二维矩阵I<sub>9</sub>转换成加密图像I′并保存输出。
地址 150040 黑龙江省哈尔滨市香坊区和兴路26号