首页 > 范文大全 > 正文

一种基于非线性混沌与数据共享的图像流加密算法

开篇:润墨网以专业的文秘视角,为您筛选了一篇一种基于非线性混沌与数据共享的图像流加密算法范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要 混沌加密是将混沌系统产生的混沌序列作为密钥序列,利用该序列对明文进行加密。密文经信道传输,接收方可以利用混沌同步的方法将明文信息提取出来实现解密。通过将具有强大矩阵运算与绘图功能的MATLAB与具有大规模数值计算能力的Fortran相结合,以数据共享的方式来实现图像的混沌加密,不仅能够使MATLAB与Fortran相互之间弥补彼此的不足,节省加密过程中大量的时间与精力,而且能够使加密后的序列更难以破解,具有运算速度快,保真度高,密钥量大,安全性好的特点,将是加密领域的一种新方法,有着广阔的应用前景。

【关键词】非线性混沌 MATLAB与Fortran共享数据 灰度图像 流加密

近年来,随着通信和Internet网络的发展,网上信息被窃听,泄露等信息安全问题层出不穷。目前国际上广泛使用的加密算法主要有两种:DES和RSA。DES算法运算速度快,但是秘钥的分发和管理存在很大的困难;RSA算法的安全性高,但是存在秘钥空间小,运算速度慢的缺陷。要实现图像流加密的前提是完成图像与数据之间的相互转化以及对数据的多层嵌套处理。1949年Shannon证明了一次一密的密码体制才是绝对安全的,为流加密算法的发展研究提供了理论支持。在本文中,我们就是利用非线性混沌产生的伪随机数列作为流密码,在MATLAB与Fortran数据共享中,实现对图像流加密的。

1 生成混沌序列的步骤

首先我们把MATLAB中数据复制到Excel中,然后将Excel另存为"ANSI编码"的txt文件以实现MATLAB向Fortran的数据传递;在Excel中"打开"txt文件,然后将数据复制到MATLAB的"新建变量"中以实现Fortran向MATLAB的数据传递。紧接着我们利用密钥交换生成混沌序列初值,先将密钥交换得到的混沌序列初值X0进行Logistic映射,从第M个数开始截取,一直截取到第M+S-1个数,再将这截取的S个数每个均作为正弦平方映射的初值进行迭代N次,最后得到的S个数便组成我们所需要的混沌序列。

2 图像加密算法

第一步:在MATLAB中将原始图像转化为二维灰度值矩阵,并将其导入到Fortran中作为明文序列矩阵。

第二步:通过密钥交换,获得混沌序列初值后,经Logistic映射与正弦平方映射,生成混沌序列,并将其转化为二维矩阵的形式。

第三步:将混沌序列矩阵作用在明文序列矩阵上,生成加密序列矩阵(1)。

第四步:将加密序列矩阵(1)的奇数行与偶数行互换,奇数列与偶数列互换,生成加密序列矩阵(2)。

第五步:将加密序列矩阵(2)的每10行奇偶互换,每10列奇偶互换,生成加密序列矩阵(3)。

第六步:将加密序列矩阵(3)导入到MATLAB中作为灰度值矩阵,转化为加密图像进行发送。

3 图像解密算法

第一步:在MATLAB中将加密图像转化为二维灰度值图像,并将其导入到Fortran中作为加密序列矩阵(3)。

第二步:将加密序列矩阵(3)的每10行奇偶互换,每10列奇偶互换,生成加密序列矩阵(2)。

第三步:将加密序列矩阵(2)的奇数行与偶数行互换,奇数列与偶数列互换,生成加密序列矩阵(1)。

第四步:通过密钥交换获得混沌序列初值后,同样经Logistic映射与正弦平方映射,生成混沌序列,并将其转化为二维矩阵形式。

第五步:将混沌序列矩阵逆作用在加密序列矩(1)上,得到明文序列矩阵。

第六步:将明文序列矩阵导入到MATLAB中作为灰度值矩阵,便可转化得到原始图像。

4 仿真结果及分析

在本文中,我们假设发送方与接收方已提前约定:Logistic映射系数μ=3.99,正弦平方映射系数b=2,经秘钥交换获得混沌映射初值X0后,从第200位起取Logistic映射数列,随后将这一数列进行正弦平方映射迭代500次,最后输出得到混沌序列。

若双方经密钥交换得到的混沌映射初值为0.6,则对一个jpg格式的图像进行加密和解密,结果如图1所示。其中左图为原始图像;中间为加密图像;右边为解密图像。

若解密方的混沌映射初值X0取值错误,解密后将得不到原始图像,如将X0取为0.61进行解密,结果如图2所示。其中左图为原始图像;中间为加密图像;右边为解密图像。

上述仿真结果表明,基于非线性混沌数据共享图像加密算法具有很好的保密性,较难破译。

5 结论

本文提出的算法吸收了密钥交换的思想,同时利用Logistic映射与正弦平方映射产生随机性很好的伪随机序列作为混沌序列,通过MATLAB与Fortran数据共享的方式,对图像进行流加密。密钥交换确定初始密钥的方法提高了密钥分发与管理的安全性。利用Logistic映射与正弦平方映射相互作用产生的混沌序列,能得到复杂度更高的密文。而将MATLAB与Fortran数据共享来实现图像加密,节省了大量的时间与精力。结果显示,该算法具有很高的运算速度,同时加密图像具有很高的复杂度。在不知道初始密钥的情况下,进行穷举法破译是非常困难的。下一步作者将改进该算法进行彩色图像加密的研究。

参考文献

[1]Richanrd Spillman.经典密码学与现代密码学[M].北京:清华大学出版社,2005.

作者单位

1.河南大学物理与电子学院 河南省开封市 475000

2.山西大学计算机与信息技术学院 山西省太原市 030006