发明名称 基于超混沌系统的密钥动态选取的图像加密算法
摘要 本发明涉及一种基于超混沌系统的密钥动态选取的图像加密算法,主要包括以下步骤:将原始明文图像排列成图像数组P,然后利用超混沌系统生成混沌序列并分组;结合依赖明文的KSSG和KS动态选取机制生成正向置乱密钥K<sub>1</sub>,对P进行正向置乱得到P1;结合KSSG和KS机制生成正向扩散密钥K<sub>2</sub>,对P1进行正向扩散得到P2;结合KSSG和KS动态选取机制生成反向置乱密钥K<sub>3</sub>,对P2进行反向置乱得到P3;利用KSSG和KS动态选取机制生成反向扩散密钥K<sub>4</sub>,对P3进行反向扩散得到P4,对P4进行重组即得到最终的密文图像。上述方法增加了密钥空间,使得安全性、加密效果和密钥敏感性更高,抗攻击能力更强,并更易于硬件实现。
申请公布号 CN104881837A 申请公布日期 2015.09.02
申请号 CN201510262218.9 申请日期 2015.05.21
申请人 河南大学 发明人 柴秀丽;杨康;王俊;甘志华;高育林;程云龙
分类号 G06T1/00(2006.01)I 主分类号 G06T1/00(2006.01)I
代理机构 郑州大通专利商标代理有限公司 41111 代理人 陈大通
主权项 一种基于超混沌系统的密钥动态选取的图像加密算法,其特征在于:包括以下步骤:步骤1.输入图像大小为M×N的灰度图像,并将灰度图像像素按照从左到右,从上到下的顺序排列成一维图像数组P;步骤2.利用超混沌系统生成混沌序列,对混沌序列进行分组,得到分组向量A<sub>i</sub>,i∈[0,5];步骤3.结合依赖明文的KSSG动态选取机制,根据变量index1=T1%6,i=index1,动态选取用于生成置乱密钥的A<sub>i</sub>,T1为根据明文像素计算公式<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>y</mi><mn>0</mn></msub><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>0</mn><mo>;</mo></mtd><mtd><mi>if</mi><mi>max</mi><mrow><mo>(</mo><msub><mi>a</mi><mi>i</mi></msub><mo>=</mo><mn>0</mn><mo>)</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mfrac><mrow><msubsup><mi>&Sigma;</mi><mn>1</mn><mrow><mi>M</mi><mo>&times;</mo><mi>N</mi></mrow></msubsup><msub><mi>a</mi><mi>i</mi></msub></mrow><mrow><mi>M</mi><mo>&times;</mo><mi>N</mi><mo>&times;</mo><mi>max</mi><mrow><mo>(</mo><msub><mi>a</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow></mfrac></mtd><mtd><mi>otherwise</mi><mo>.</mo></mtd></mtr></mtable></mfenced><mo>,</mo></mrow>]]></math><img file="FDA0000721765240000011.GIF" wi="1003" he="292" /></maths>T1=mod(floor(y<sub>0</sub>×10<sup>8</sup>),M×N)计算得到的非负整数,其中,a<sub>i</sub>表示原始图像数组P的第i个元素,max(a<sub>i</sub>)表示取数组P中的最大值,floor(x)表示小于或等于x的最大整数,mod(a,b)表示a对b的取模运算;并结合KS动态选取机制,根据变量index2=T2%2+1,动态选取A<sub>i</sub>中的元素A<sub>i</sub>(index2,S)生成置乱密钥K<sub>1</sub>(j),其中,S∈[1,M×N],j∈[1,M×N],T2为根据明文像素得到的非负整数,A<sub>i</sub>(index2,S)表示A<sub>i</sub>中第index2行向量的第S个元素,依据置乱密钥K<sub>1</sub>(j)对图像数组P进行正向置乱加密,得到正向置乱加密图像数组P1;步骤4.利用依赖明文的KSSG动态选取机制读取图像数组P中第一个元素P(1),即T1=P(1),根据index1=T1%6,i=index1,选取生成扩散密钥的A<sub>i</sub>;结合KS动态选取机制,根据变量index2=T2%2+1,生成扩散密钥K<sub>2</sub>(j),依据扩散密钥K<sub>2</sub>(j)对正向置乱加密图像数组P1进行正向扩散加密,得到正向扩散加密图像数组P2;步骤5.利用依赖明文的KSSG动态选取机制,根据变量index1=T1%6,i=index1,动态选取用于生成置乱密钥的A<sub>i</sub>,T1为根据明文像素依据公式<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msup><msub><mi>y</mi><mn>0</mn></msub><mo>&prime;</mo></msup><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>0</mn><mo>;</mo></mtd><mtd><mi>if</mi><mi>max</mi><mrow><mo>(</mo><msup><msub><mi>a</mi><mi>i</mi></msub><mo>&prime;</mo></msup><mo>=</mo><mn>0</mn><mo>)</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mfrac><mrow><msubsup><mi>&Sigma;</mi><mn>1</mn><mrow><mi>M</mi><mo>&times;</mo><mi>N</mi></mrow></msubsup><msup><msub><mi>a</mi><mi>i</mi></msub><mo>&prime;</mo></msup></mrow><mrow><mi>M</mi><mo>&times;</mo><mi>N</mi><mo>&times;</mo><mi>max</mi><mrow><mo>(</mo><msup><msub><mi>a</mi><mi>i</mi></msub><mo>&prime;</mo></msup><mo>)</mo></mrow></mrow></mfrac></mtd><mtd><mi>otherwise</mi></mtd></mtr></mtable></mfenced><mo>,</mo></mrow>]]></math><img file="FDA0000721765240000012.GIF" wi="1039" he="307" /></maths>T1=mod(floor(y<sub>0</sub>'×10<sup>8</sup>),M×N)计算得到的非负整数,其中,a<sub>i</sub>'表示正向扩散图像数组P2的第i个元素,max(a<sub>i</sub>')表示取图像数组P2中的最大值,floor(x)表示小于或等于x的最大整数,mod(a,b)表示a对b的取模运算;并结合KS动态选取机制,根据变量index2=T2%2+1,生成反向置乱密钥K<sub>3</sub>(j),依据反向置乱密钥K<sub>3</sub>(j)对正向扩散加密图像数组P2进行反向置乱加密,得到反向置乱加密图像数组P3;步骤6.利用依赖明文的KSSG动态选取机制,读取正向扩散加密图像数组P2最后一个元素P2(M×N),T1=P2(M×N),依据index1=T1%6,i=index1,动态选取A<sub>i</sub>;结合KS动态选取机制,根据变量index2=T2%2+1,选取A<sub>i</sub>中的元素生成反向扩散密钥K<sub>4</sub>(j),根据反向扩散密钥K<sub>4</sub>(j)对反向置乱加密图像数组P3进行反向扩散加密,得到反向扩散加密图像数组P4,并将反向扩散加密图像数组P4重组为大小M×N的数组密文。
地址 475001 河南省开封市顺河区明伦街85号