基于安卓平台的图像加密工具的设计与实现
2018-09-10莫恭钿
莫恭钿
【摘 要】互联网应用的日益普及,使得信息传播变得越来越方便。网络开放性的特点使得攻击者很容易拦截、篡改、伪造网络中传输的数据,从而导致信息的安全性无法得到保障。面向安卓平臺的图像加密工具所研究的是在安卓平台上实现图像加密和解密,以确保图像的安全性。图像的加密是确保图像安全的重要途径之一,有着良好的应用前景。文章介绍了快速交换技术和随机划分算法,并在安卓平台上实现了该算法。
【关键词】安卓平台;图像加密工具;设计;实现
【中图分类号】TP393 【文献标识码】A 【文章编号】1674-0688(2018)06-0077-03
0 引言
传统密码学方法可有效加密文本信息,但并不适用于图像等多媒体数据。图像加密又可称为图像置乱。它在保持图像描述信息不变的前提下,将有意义的图像内容转换成无视觉意义的混乱数据,使非法访问者无法辨认,从而达到保护图像内容的目的。Watanabe等人提出对图像的部分码流置乱,实现与JPEG2000兼容。在图像加密研究中,Arnold变换算法应用较广,它利用一个2×2的变换矩阵将第x行第y列的像素转移到第x'行第y'列,迭代计算多次即可得到最终加密图像。由于该算法有严格的数学理论且实现简单,因此被众多研究人员应用于图像加密设计,然而迭代计算特点使算法效率较低。Arnold变换还要求图像的宽和高相等,限制了应用范围。此外,其他一些技术也被应用于图像加密研究,如队列变换、像素位交换、混沌系统等。
1 功能介绍
本文设计的加密工具主要实现的功能如下:实现联合交换技术和随机分块的快速图像加密方法。作为辅助功能,本文还实现了读取、显示和保存BMP图像的功能(如图1所示)。
图像加密工具分为图像加载、图像加密、图像解密、图像保存、图像清除5个模块。{1}图像加载:用户可以通过按路径或者按图库的方式选择图像,选择的图像会被加载到软件的主界面。{2}图像加密:如果主界面已经加载有图像,用户输入加密密码后,软件就会将选定的图像通过联合交换技术和随机分块的快速图像加密算法加密图像。{3}图像解密:如果主界面已经加载有图像,用户输入解密密码后,软件就会将选定的图像通过联合交换技术和随机分块的快速图像解密算法解密图像。{4}图像保存:将选定的图像进行保存。{5}图像清除:将界面上的图像关闭。
2 联合交换技术和随机分块的快速图像加密方法
本文运用了一种基于交换技术和随机分块的快速图像加密方法。这种方法运用交换技术打乱原来图像的像素位置,并且通过随机分块策略增强图像加密的安全性。它的优点是不需要迭代计算,执行一次就可实现图像加密。这种加密算法能够有效地减少系统的运行时间。除此之外,它对图像大小无限制,应用范围较广。
2.1 快速交换技术
首先把图像Image看成是一个宽高比为M×N的二维矩阵,其中图像的一个像素I(i,j)表示为M×N矩阵的第i行第j列元素,宽度M的取值范围为0≤i202,200”。对比像素交换前后的位置,发现“200”由位置0变换到位置5,“201”由位置1转移到位置3,“202”由位置2移动到位置4,“203”由位置3移动到位置0,“204”由位置4变换到位置2,而“205”则由位置5置乱到位置1。换句话来说,位置映射一维数组P的各元素取值变为P(0)=5、P(1)=3、P(2)=4、P(3)=0、P(4)=2、P(5)=1。
综上所述,如果系统生成一维数组P的速度越快,加密图像就越快完成。在《Image encryption using mapping array and random division》文献提出一种使用伪随机发生器的映射一维数组生成方法。
2.2 随机分块
为了增强快速交换算法的安全性,本文也使用到了《Image encryption using mapping array and random division》文献中提到的随机重叠分块技术。也就是说,先对一幅图像进行随机分块,再对每个分块逐一加密,最终实现整幅图像的加密。如图2所示,在密钥的控制下,在图像Image中随机选取4个顶点分别记为p1(x1,y1)、p2(x1,y2)、p3(x2,y2)和p4(x2,y1),其中0
因为图像块间存在着重叠区域,所以部分像素会被多次交换。如图4所示,灰色部分为随机选取的矩形,是4个图像块的重叠部分,随机分块算法将4次计算该区域;而斜线区域是2个相邻块的重叠区域,算法对该区域计算2次;区域1、2、3和4的像素则仅需处理一次。因此,对图像块Block1、Block2、Block3和Block4加密次序的不同,会得到不同的加密结果。总之,4个图像块的排列次序共有4!=24种。因为计算次序会影响最终加密结果,所以可用密钥控制随机选择一种次序。
3 测试结果
本系统是基于Android开发出来的主界面。主界面包含了7个部分,如图5(a)所示。当主界面中不存在图像的时候,点击加密/解密按钮,不会产生加密/解密操作而是提示用户先加载一幅图像。通过图5(b/c)的任何一种方式可以选择加载图像到主界面,如图5(d)所示。当主界面中已经加载有图像的时候,点击加密按钮,则会弹出图6(a)所示的对话框,在此对话框中就可以输入密码了。当用户输入的密码少于6位且点击了确认的时候,就会提示用户密码少于6位,这时候图6(a)对话框并不会马上关闭,而是编号1的文本框的内容被清除,用户可以继续输入密码。当用户输入了长度大于6位的密码的时候,点击确认按钮,则可以进行加密操作。如果界面出现图6(b)所示的混乱图像,则说明图像加密成功。图像被加密了之后,通过任何一款看图软件打开,都是显示混乱的图像,因此图像的信息得到了安全保存。解密界面和加密界面是一样的,只是调用的对象不一样而已。当要查看图像的时候,通过本软件加载图像,输入解密的密码,如果密码正确,则原来的图像被还原回来。如果密码不正确,则提示密码不正确,图像还是混乱的图像。正确解密的图像和原来加密之前的图像是完全一样的。保存图像(如图7所示)的时候,选择打开路径对话框,用户就可以选择文件的路径,在文件对话框的顶部显示有文件的路径,当选择到文件的时候,会默认选定该文件所在的路径;如果文件夹里无文件,那么点击一下获取路径按钮,就可以获得该文件夹的路径并且关闭路径对话框。如果点击了取消按钮,则不改变编号2中的路径。通过本过程就可以将图像进行加密/解密之后保存。
4 结语
图像加密是确保数据在互联网进行安全传输的重要技术手段。本文采用《Image encryption using mapping array and random division》文献中提到的快速加密/解密算法/随机划分算法,设计并实现面向安卓平台的图像加密软件。经过测试,该软件能够在手机上正确运行,能够实现图像的解密以及解密,保证信息的安全。
参 考 文 献
[1]Z Tang,W Lan,Y Dai,et al.Image encryptionusing mapping array and random division[J].ICIC Express Letters,Part B:Applications,2011,12(6):1297-1302.
[2]O Watanabe,A Nakazaki,H Kiya.A fast imagesc-ramble method using public-key encryption allowing backward compatibility with JPEG2000[C].Proc.Of IEEE Conference on Image Processing,Singapore,2004:3435-3438.
[3]D Qi.Matrix transformation and its application to im-age hiding[J].Journal of North China University ofTechnology,1999,11(1):24-28.
[4]L Zhu,W Li,L Liao et al.A novel algorithm forscrambling digital image based on catchaotic mapping[C].Proc.Of the and IEEE International Conference on Intelligent Information Hiding and Multimedia Signal Processing,Pasadena,CA,USA,2006:601-604.
[5]Z Shang,H Ren,J Zhang.A block location scr-ambling algorithm of digital image based on Arnold transformation[C].Proc. Of the 9th International Con-ference for Young Computer Scientists,Zhangjiajie,China,2008:2942-2937.
[6]孫燮华.图像加密算法与实践[M].北京:科学出版社,2013.
[责任编辑:钟声贤]