android图片资源加密,Android平台图像文件加密

android图片资源加密,Android平台图像文件加密传统计算机平台下的图像加密技术已经得到了广泛的研究和应用,但移动平台受限于当前的硬件架构,无法直接继承传统平台的安全性技术。针时智能手机等移动平台中的图像信息安全问题,提出了一种基于Android移动平台的图像加密方案。一、图像加密技术1、传统图像加密技术分析传统的图像加密技术主要基于现代密码体制。通常将图像像素信息看作一维数据流,在密钥的控制下,利用加密算法(常用加密算法如EDS、AES、RC6…

大家好,又见面了,我是你们的朋友全栈君。

传统计算机平台下的图像加密技术已经得到了广泛的研究和应用,但移动平台受限于当前的硬件架构,无法直接继承传统平台的安全性技术。针时智能手机等移动平台中的图像信息安全问题,提出了一种基于Android移动平台的图像加密方案。

一、图像加密技术

1、传统图像加密技术分析

传统的图像加密技术主要基于现代密码体制。通常将图像像素信息看作一维数据流,在密钥的控制下,利用加密算法(常用加密算法如EDS、AES、RC6等)进行加密。但现代密码体制主要是为文本信息设计,而没有考虑到数字图像数据量大、相关性强、空间有序等特点,故对图像信息加密具有较大的计算量,加密效率也不高。随着人们对多媒体信息的安全越来越重视,研究者提出了多种针对图像的加密技术,其主要的思想是将数字图像进行灰度变换和图像置乱。灰度变换是指改变图像像素点的灰度值的大小,使得加密前后,像素序列的内容完全改变,有人利用灰度变换对图像进行加密,得到了较好的加密效果。图像置乱就是将图像的信息次序打乱,将像素移动到像素的位置上,像素移动到f像素的位置上等,使其变换成杂乱无章难以辨认的图像。有人首先利用混沌系统构造随机序列,然后将像素矩阵的行或者列按照随机序列重新排列,得到了比较理想的加密效果。但这些方法,一般在灰度变换或者构造随机序列的过程中需要较大的计算量,如果直接移植到移动平台,可能会影响图像加密速度。

2、混沌系统

混沌是非线性系统中出现的一种貌似无规则的类随机过程,是普遍存在的复杂运动形式和自然现象。混沌系统一般都具有对初始条件的敏感依赖性、整体稳定而局部不稳定、轨道不稳定及分岔、长期不可预测性等特点。此系统由于具有良好的随机特点,因此经常应用于图像加密算法一混沌系统中常见的有Logistic系统和tent系统。

Logistic映射源自于对人口统计的动力学系统,是一个典型非线性混沌方程。它具有遍历性、非周期性、长期不可预测性以及非收敛性等良好的混沌性质,其映射定义为(当系数3. 596≤a≤4时,系统进入混沌状态):

191.png

Tent系统是一种分段线性的一维映射,具有均匀的概率密度与功率谱密度,以及较理想的自相关性。Tent映射定义为(其中当O

192.png

二、Android移动平台图像加密

1、算法设计思想

本文通过对图像加密技术的研究,提出了一种创新的移动平台图像加密算法。首先将待加密图像矩阵J分成若干个小的矩阵块;再利用图像置乱与灰度变换处理每一个小的分块;然后把每个分块内的像素值发散到其他分块内;最后将所有分块合成加密后的图片,加密流程如图1所示。本算法在保证加密效果的同时,减少了图像置乱处理所需要的计算量,使之适合在移动平台上加密图像。

193.png

2、加密算法描述

(1)预处理

对于原始图片f,其像素矩阵大小为MXN,扩充(用O填充)像素矩阵使其大小变为M’×N’,使得其中m’、N’为完全平方数,不妨设M’=m,N’=n。将M’×N’的像素矩阵按顺序分成m×n2个大小为m×n的分块。为了方便起见,用二维数组Aij来表示第(i,j个分块。用二维数组BAij[x][y]来表示分块A[ij]中的像素值(其中0≤i≤m-1,O≤j≤n-l,0≤z≤m-l,O≤y≤n-1)。为了增加安全性,先将Logistic混沌系统和Tent混沌系统分别迭代keyl、key2次。迭代次数keyl、key2作为加密密钥。其中Logistic的初值作为密钥key3,参数a作为密钥key4。其中tent系统的初值作为密钥key5。参数b作为密钥key6。

(2)分块内的处理

利用Logistic混沌系统构造序列T[m×n],使得O≤T[i]≤mXn-l,其中o≤i≤mXn-1,并且有T[i]≠T[j],当i≠j时。对每个分块内像素值的处理方法如下,以分块A[i]j]为例。

a)构造置换数组

利用tent混沌系统产生一个随机数temp。再对mXn取余,得到新的序列T[mXn]。公式表述:

194.png

b)按照序列T[mxn]的顺序,置换分块内的像素值

如对于BA[ij] [x] [y],首先计算置换位置,设:

195.png

c)异或操作

对于分块内的每一个像素值BA[ij] [x] [y],利用tent混沌系统产生一个伪随机数e,再将像素值BA[ij] [x] [y]与e异或。即:

196.png

(4)将步骤(3)处置之后的分块按列序优先从小到大的顺序排列,得到加密后的图像I’。

3、解密算法描述:

利用加密时密钥keyl、key2、key3、key4、key5、key6的值,按照加密的逆过程解密,然后去掉添加的多余数据(如果存在),即可得到解密后的图像。

三、实验分析

实验的测试平台为双核CPU,其型号为ARM Cortex-A9,频率为l024MHz,RAM容量为lGB,搭载Android 4.O操作系统。利用本文的算法对Lena(256×256)加密的效果如图2所示。图2(a)为加密前的图像,图2(b)为加密后的图像,图2(c)为解密后的图像,由图可知,通过本算法,达到了较好的加密效果,通过加密后的图像无法看到原图的信息。

197.png

1、密钥敏感性分析

通过对密钥做微小的改变来测试密文对密钥的敏感性。为了简单起见,这里只测试对密钥key3的敏感性。将couple(256×256)图像作为用例,不妨令key3=0.9000000。图3(a)为加密前的图像,图3(b)为加密后的图像,图3(c)为输入正确密钥key3=0. 9000000后得到的解密图像。图3(d)为输入错误密钥key3=0.90000001后得到的解密图像。

198.png

2、直方图分析

Lena图像加密前后的直方图对比如图4所示,该直方图是一幅图像像素有序分布的图表,反映了图像处理之后像素的分布。由图4可知,加密后直方图分布非常均匀,掩盖了图像加密前像素值的分布规律,从而可以有效地抵抗统计分析和已知密文攻击。

199.png

3、相关性分析

加密效果之一是尽可能地降低相邻像素的相关性,用如下离散化式计算相关系数:

1100.png

随机在水平、垂直方向各选取1000对相邻像素值,利用上面的公式计算出相关系数,如表1所列。通过对比加密前后的相关系数,可以发现本算法有效地减小了相邻像素值之间的相关性。

1101.png

4、信息熵分析

图像信息熵是一种特征的统计形式,它反映了图像中平均信息量的多少。在信息论中,一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。所以信息熵也可以说是系统有序化程度的一个度量。

对图像信息熵的计算,可利用如下公式:

1102.png

其中,p(i)表示图像中灰度值为Z的像素所占的比例。利用以上公式可计算出加密前后的信息熵,表2为加密前后的信息熵的比较,从中看出加密后的各个颜色分量的信息熵均大于加密前的信息熵,说明加密后图像中的信息变得混乱,达到了加密的效果。

1103.png

小知识之直方图

直方图(Histogram)又称质量分布图。是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145418.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • oracle分页基本语法[通俗易懂]

    oracle分页基本语法[通俗易懂]–分页:–mysql:limit–oracle:rownum伪列–伪列:在表结构中不存在的列–rowid伪列:用于唯一标识一行记录–rownum伪列:行号select*fromemp;–看不到行号–select*,rownumfromemp;–报错selecte.*,rownumfromempe;–正确的–rownum:行号是从1开始的,也…

    2022年5月28日
    50
  • ThinkPHP运算符 与 SQL运算符 对比表[通俗易懂]

    ThinkPHP运算符 与 SQL运算符 对比表

    2022年1月23日
    48
  • 五种聚类方法_聚类分析是一种降维方法吗

    五种聚类方法_聚类分析是一种降维方法吗本文为雷锋字幕组编译的技术博客,原标题The5ClusteringAlgorithmsDataScientistsNeedtoKnow,作者为GeorgeSeif。聚类是一种关于数据点分组的机器学习技术。给出一组数据点,我们可以使用聚类算法将每个数据点分类到特定的组中。理论上,同一组中的数据点应具有相似的属性或特征,而不同组中的数据点应具有相当不同的属性或特征(即类内差异小,…

    2022年10月20日
    3
  • php上传文件与图片到七牛的实例详解

    php上传文件与图片到七牛的实例详解

    2021年10月27日
    41
  • redis缓存雪崩 缓存穿透 缓存击穿如何解决_防止redis缓存击穿

    redis缓存雪崩 缓存穿透 缓存击穿如何解决_防止redis缓存击穿缓存的击穿、穿透和雪崩应该是再熟悉不过的词了,也是面试常问的高频试题。不过,对于这三大缓存的问题,有很多人背过了解决方案,却少有人能把思路给理清的。而且,网络上仍然充斥着,大量不太靠谱的解决方案,难免误人子弟。我的这篇文章,则会对这三大缓存问题,做一个深入的探讨和分析。最有价值的,不是答案本身,而是诞生答案的过程。缓存击穿缓存击穿是什么,大家应该心里都清楚,我只做一个简单通俗的解释:…

    2025年11月14日
    3
  • int转long Long型

    int转long Long型Longl=(Long)5;以上的不行 因为Long是包装类,而int是值类型数据,两者是不能这样强转的。longl=(long)5; int和long都是基本类型的数据,是可以强转的,那么我就可以以此作为桥梁,强转成long后,再生成Long类型的数据。Longl=newLong((long)5); 这样就可以将int类型顺利转换为Long…

    2022年5月3日
    81

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号