图像加密
随着计算机与互联网技术迅速发展,再加上大数据的崛起,网络传输信息量与速度的不断发展,网络传输的信息量和速度令人惊叹。但在传输过程中却很少有人关注到安全问题,为防止在数据传输过程中被他人拦截盗取和破坏,则可以利用混沌系统在图像、音频、视频等方面加密来设计缜密的算法。
少了一个铁钉,掉了一个马掌;
掉了一个马掌,失了一匹战马;
失了一匹战马,丢了一个国王;
丢了一个国王,输了一场战争;
输了一场战争,亡了一个国家。
——西方世界民谣
正如这首西方世界民谣一样,在混沌系统中,对其初始条件进行及其微小的改变,就会发生生翻天覆地的变化。这正是混沌系统对初始条件的敏感依赖性特性,而这一特性应用在密码学上再合适不过了。因此,本文将利用这一特性进行图像加密。
图像加密的基本原理有两种:置乱和扩散。置乱是将图像各像素点按一定的规则打乱顺序。扩散是通过在元素之间建立扩散路径,使元素沿着该路径向其他元素扩散。每一个元素都沿着指定的路径扩散,从而使元素间相互发生影响。
logstics混沌系统图像加密
函数系统方程:
当满足以下条件时:
1<x0<1
3.57<μ<4
Logistic函数工作于混沌状态。
图像加密算法:
Step1: 利用logistics系统生成一维序列。
Step2: 取其中一段长度满足需加密图片像素width*height的一维序列chaos_seq。
Step3: 然后将chaos_seq序列从小到大排列,记录下标序列indx_en。
Step4: 利用序列indx_en生成width*height的矩阵,最后交换排列前后的像素位置进行置乱。
Step5: 解密过程为加密的逆过程。
仿真:
原图
加密图片
解密图片
加密效果分析:
加密前像素分布直方图
加密后像素分布直方图
基本上可以完成加密,但是加密的密钥空间较小,而且容易被破解且通过像素直方图可看出加密前后的分布不算均匀,算法任需改进。
关注以下公众号回复"图像加密"即可获得完整python仿真代码,欢迎关注一起学习!