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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SQL基础编程_如何学编程

    SQL基础编程_如何学编程一.SQL的环境搭载单机与在线二.SQL的单表操作1.sql基础三步2.sql四则运算3.limit(限制查询结果个数)4.orderby(排序)5.where综合条件筛选6.SQL常量7.distinct(把结果中重复的行删除)8.函数三.SQL的多表操作1.嵌套子循环2.JOIN——连接多个数据库(或多表)3.null与内连接与外连接

    2022年10月5日
    0
  • python+PIL实现图片对比

    python+PIL实现图片对比

    2021年5月24日
    123
  • win11频繁更新,关闭win11恶意软件删除工具补丁更新

    win11频繁更新,关闭win11恶意软件删除工具补丁更新win11补丁更新主要包含4部分:第一部分功能更新,涉及Windows功能bug、新增的功能等;第二部分质量更新,涉及安全风险的更新;第三部分驱动更新,涉及厂商等提交给微软的驱动,进行更新;第四部分其它更新,目前主要发现的是,恶意软件删除工具更新。恶意软件删除工具,如果有第三方安全软件的话,这个补丁意义不大,并且恶意的标准是微软自家定义的,就看你是否接受微软自带的杀毒软件,如果用可以更新,如果不用该补丁频率高,无必要。关闭“恶意软件删除更新”,只需要用dism++关闭,步骤如下:

    2022年6月24日
    34
  • 堆栈callstack打印

    堆栈callstack打印一、适用java1、Log.d(TAG,Log.getStackTraceString(newThrowable()));//在使用Log.d的场合2、newException(“testprintkstack”).printStackTrace();Note:还有其他方法,可以参考网络

    2022年10月25日
    0
  • STM32CubeMX | STM32 HAL库方式的微秒延时函数

    STM32CubeMX | STM32 HAL库方式的微秒延时函数STM32CUBEMX系列教程之HAL库方式的微秒延时函数标准库一般是使用系统嘀嗒定时器来进行微妙级别的延时,而HAL库官方使用SysTick的地方非常多,改代码容易引起错乱。网上的代码使用定时器进行微秒级别延时(不知道该方式的请自行搜索),总是卡在__HAL_TIM_GET_COUNTER,所以自己实现一个微秒级别延时函数尤为重要。#defineCPU_FREQUENCY_MHZ…

    2022年6月29日
    39
  • Lefse本地运行并更换颜色

    Lefse本地运行并更换颜色首先是lefse的安装由于lefse使用的环境比较早,建议使用conda虚拟环境的方式安装,可以省掉不少麻烦condacreate-nlefsepython=2.7python=2.7#python这里选成2.7否则会卡住环境安装完成后,进入环境安装lefsesourceactivatelefsecondainstalllefse…

    2022年5月9日
    43

发表回复

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

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