一种DEM置乱加密与还原方法与流程

文档序号:11156091阅读:968来源:国知局
一种DEM置乱加密与还原方法与制造工艺

本发明属于地理信息安全领域,具体涉及一种基于三维混沌序列对DEM进行置乱加密与还原的方法。



背景技术:

DEM(Digital Elevation Model,即数字高程模型),是用一组有序数值阵列表示地面高程值的一种实体地面模型。由于DEM描述的是地面高程信息,它在测绘、水文、气象、地貌、地质、土壤、工程建设、通讯、军事等国民经济和国防建设以及人文和自然科学领域有着广泛的应用。DEM作为一种基础地理信息资源,具有重要的军事价值和经济价值,是测绘部门和应用单位的重点保护对象,有必要在传输和存储过程中进行置乱加密操作。

长期以来,针对DEM的加密技术研究甚少,且主要集中于应用传统流式文件的一般加密方法进行加密。这种简单粗暴的加密方法,既破环了文件的基本结构,又容易引发数据破译者的兴趣。因此迫切需要研发一种安全性高、隐蔽性好的DEM置乱加密与还原方法。



技术实现要素:

本发明的目的在于,克服现有技术存在的缺陷,提供一种DEM置乱加密与还原方法,利用三维混沌技术,分别通过对头文件置乱、对高程置乱和对位置置乱,形成针对DEM的置乱加密与还原,可有效解决DEM数据的安全传输与封装存贮环节中的地理信息安全问题。

为了实现上述目的,本发明采取的技术方案如下:

一、DEM的置乱加密方法,其步骤如下:

步骤1:基于ArcMap软件,通过ArcToolbox->转换工具->由栅格转出->栅格转ASCII操作,将Esri Grid格式的DEM数据转化为ASCII编码的txt文件。

步骤2:将txt文件以行为主序存入一M×N矩阵A中,其中M为DEM的行数,N为DEM的列数,并从DEM的头文件中读取出DEM的像元大小cellsize,左上角x起始坐标xllcorner和左上角y起始坐标yllcorner。

步骤3:输入x1、y1、z1作为混沌系统的初值,且x1∈(0,1),y1∈(0,1),z1∈(0,1)。输入置乱因子ρ的值,且ρ∈[1,1000]。定义参数σ的值,且σ∈(0,1)。

步骤4:根据公式(1),生成混沌序列X、Y和Z;其中X={xk|k=1,2,3,...,max{M+N+13,10000}},Y={yk|k=1,2,3,...,max{M+N+13,10000}},Z={zk|k=1,2,3,...,max{M+N+13,10000}};

步骤5:获取序列S、J、Q、J′、Q′、I和T。其中S为待和Z进行异或操作的序列。J、Q为对行号进行位置置乱操作的序列。J′、Q′为对列号进行位置置乱操作的序列。I和T为对Z值进行位置置乱操作的序列。

步骤5.1,根据公式(2)和(3),对混沌序列Z进行非线性离散化,生成序列S,S={sk|k=1,2,3,...,M+N+13};

步骤5.2,设混沌序列X的子集X′={x1,x2,x3,...,x10000}的索引号序列{1,2,3,…,10000}为序列J;将组元(xn,jn)以xn为主要关键字进行升序排序,将排序后的序列J记为序列Q。

步骤5.3,设混沌序列Y的子集Y′={y1,y2,y3,...,y10000}的索引号序列{1,2,3,…,10000}为序列J′;将组元(yn,jn′)以yn为主要关键字进行升序排序,将排序后的序列J′记为序列Q′。

步骤5.4,设混沌序列Z的子集Z′={z1,z2,z3,...,z10000}索引号序列{1,2,3,…,10000}为序列I;将组元(zn,in)以zn为主要关键字进行升序排序,将排序后的序列I记为序列T。

步骤6:对DEM数据的头文件进行置乱

根据公式(4)对cellsize、xllcorner和yllcorner进行加密操作,得到加密数据scellsize、sxllcorner和syllcorner

步骤7:根据序列S、T对矩阵A进行高程置乱

步骤7.1,将矩阵A的一点的高程值Cmn转为14位的二进制数表示,其中m和n为对应的行号与列号;m∈[1,M],n∈[1,N]。

步骤7.2,若m+n为奇数,则先将Cmn的低7位与高7位进行交换;若m+n为偶数则不变;选取S的一14位子序列{sm+n,sm+n+1,sm+n+2,…,sm+n+13}按位与Cmn异或。

步骤7.3,将异或后的结果转化为十进制数表示,得到变化后的高程值C′mn

步骤7.4,基于C′mn,根据公式(5)生成临时变量b;

b=C′mn modρ (5)。

步骤7.5,在序列T中遍历寻找值为b的元素,将其序列号记为serialID,则根据公式(6)计算出C″mn

C″mn=C′mn-b+serialID (6)。

循环执行步骤7.1-步骤7.5,对矩阵A中的每一点都进行如上操作,得到新矩阵A′,其中m和n为对应的行号与列号。

步骤8:根据序列Q、Q′对矩阵A′进行位置置乱:

从矩阵A′的首行首列开始,循环执行步骤8.1-步骤8.4,逐个将矩阵A′中元素C″mn与C″m′n′位置互换,得到矩阵A″;矩阵A″即为对DEM置乱后的最终结果。

步骤8.1,根据公式(7),利用矩阵A′中的每一元素C″mn的行号m,生成临时变量p;

p=m modρ (7)。

步骤8.2,在序列Q中遍历寻找与p值相等的元素,记其下标为serialID′,则根据公式(8),生成m′;

m′=m-p+serialID′ (8)。

步骤8.3,根据公式(9),利用矩阵A′中的元素C″mn的列号n,生成p′;

p′=n modρ (9)。

步骤8.4,在序列Q′中遍历寻找与p′值相等的元素,记其下标为serialID″,则根据公式(10),生成n′;

n′=n-p′+serialID″ (10)。

步骤9:基于置乱加密后的数据,生成置乱加密后的txt文件。

步骤10:基于ArcMap软件,通过“ArcToolbox->转换工具->转为栅格->ASCII转栅格”操作,将txt文件转换为Esri Grid格式的DEM数据。

(二)DEM置乱还原方法(DEM置乱的还原过程),包括如下步骤:

步骤A:基于ArcMap软件,通过“ArcToolbox->转换工具->由栅格转出->栅格转ASCII”操作,将DEM数据转化为ASCII编码的txt文件;从txt中读取数据至矩阵A″。

步骤B:将置乱后的DEM以行为主序存入行数为M,列数为N的矩阵A″中,其中M为置乱后的DEM的行数,N为置乱后的DEM的列数,并从DEM的头文件中读取出置乱后的DEM数据的像元大小scellsize、左上角x起始坐标sxllcorner和左上角y起始坐标syllcorner

步骤C:输入x1、y1、z1作为混沌系统的初值,且x1∈(0,1),y1∈(0,1),z1∈(0,1)。输入置乱因子ρ的值,且ρ∈[1,10000]。定义参数σ的值,且σ∈(0,1)。

步骤D:根据公式(1),生成混沌序列X、Y和Z;其中X={xk|k=1,2,3,...,max{M+N+13,10000}},Y={yk|k=1,2,3,...,max{M+N+13,10000}},Z={zk|k=1,2,3,...,max{M+N+13,10000}}。

步骤E:获取序列S、J、Q、J′、Q′、I和T

步骤E.1,根据公式(2)和(3),对混沌序列Z进行非线性离散化,生成序列S,S={sk|k=1,2,3,...,M+N+13}。

步骤E.2,设混沌序列X的子集X′={x1,x2,x3,...,x10000}的索引号序列{1,2,3,…,10000}为序列J;将组元(xn,jn)以xn为主要关键字进行升序排序,将排序后的序列J记为序列Q;

步骤E.3,设混沌序列Y的子集Y′={y1,y2,y3,...,y10000}的索引号序列{1,2,3,…,10000}为序列J′;将组元(yn,jn′)以yn为主要关键字进行升序排序,将排序后的序列J′记为序列Q′。

步骤E.4,设混沌序列Z的子集Z′={z1,z2,z3,...,z10000}索引号序列{1,2,3,…,10000}为序列I。将组元(zn,in)以zn为主要关键字进行升序排序,将排序后的序列I记为序列T。

步骤F:对DEM的头文件进行还原

根据公式(11)对scellsize、sxllcorner和syllcorner进行还原操作,得到还原数据cellsize、xllcorner和yllcorner;

步骤G:根据序列Q和Q′对矩阵A″中的置乱后的位置进行还原

从矩阵A″末行末列开始,循环执行步骤G.1-步骤G.1,逐个往前将矩阵A′中元素C″m′n′与C″mn互换,得到矩阵A′,其中m和n为矩阵A′中对应的行号与列号:

步骤G.1,根据公式(12),利用矩阵A″中的元素C″m′n′的行号m′,生成serialID′;其中m′和n′为对应的行号与列号

serialID′=m′modρ (12)。

步骤G.2,寻找序列Q中索引号为serialID′的元素,记其值为p,根据公式(13),生成m;

m=m′+p-serialID′ (13)。

步骤G.3,根据公式(14),利用矩阵A″中的元素C″m′n′的列号n′,生成serialID″;

serialID′′=n′modρ (14)。

步骤G.4,寻找序列Q′中索引号为serialID′′的元素,记其值为p′,根据公式(15),生成n;

n=n′+p′-serialID″ (15)。

步骤H:根据序列S、T对矩阵A′中的数据进行高程还原

循环执行步骤H.2-步骤H.5,对矩阵A′中的每个点循环执行上述操作,得到矩阵A,矩

阵A即为还原后的最终结果:

步骤H.1,根据公式(16),利用矩阵A′中的元素C″mn,生成serialID;

serialID=C″mn modρ (16)。

步骤H.2,寻找矩阵A′中索引号为serialID的元素,记其值为b,则根据公式(17),得到

C′mn=C″mn+b-serialID (17)。

步骤H.3,将C′mn用14位的二进制数表示,其中m∈[1,M],n∈[1,N]。

步骤H.4,选取S的一14位子序列{Sm+n,Sm+n+1,Sm+n+2,…,Sm+n+13}与C′mn的14位二进制数,进行按位异或操作;若m+n为奇数,则将异或结果的低7位与高7位进行交换,若m+n为偶数,则不变。

步骤H.5,将变换后的高程值转化为十进制得到Cmn

步骤I:基于ArcMap软件,通过“ArcToolbox->转换工具->转为栅格->ASCII转栅格”操作,将txt文件转换为Esri Grid格式的DEM数据,完成DEM的还原处理。

本发明方法利用三维混沌技术,分别通过对头文件置乱、对高程置乱和对位置置乱,形成针对DEM的置乱加密与还原,可有效解决DEM数据的安全传输与封装存贮环节中的地理信息安全问题。

附图说明

图1本发明的流程图(a.置乱加密流程,b.还原流程)。

图2实验数据。

图3置乱加密后的处理结果。

图4还原后的处理结果。

具体实施方式

下面结合附图和实施例做进一步详细说明

实施例1

本实例选取的是1:50000的庐山局部DEM数据,数据格式为Esri Grid格式。针对数据格式的转化、数据读取、置乱加密、还原的整个过程,给出本发明的一个实施例。

1、基于混沌序列的DEM的置乱加密过程

步骤11:

1)在ArcMap打开数据,用ArcToolbox->转换工具->由栅格转出->栅格转ASCII,将DEM数据转化为ASCII编码的txt文件。本实例选取的数据在ArcScene中三维显示如图2。

步骤12:

首先,读取txt格式的DEM数据的头文件。其中xllcorner=390996,yllcorner=3274219,cellsize=5。其次,读取各点高程值。该实例中开辟的是935行,1220列的二维阵列。

步骤13:输入三维混沌序列的初值x1=0.21,y1=0.32,z1=0.44。并设置σ=0.45,ρ=10000。

步骤14:根据公式(1),生成序列长度为2168的混沌序列X,X={0.21,0.97,0.81,…,0.88}、序列长度为2168的混沌序列Y,Y={0.32,0.94,0.63,…,0.77}和序列长度为2168的混沌序列Z,Z={0.44,0.91,0.45,…,0.67}。

步骤15:获取序列S、J、Q、J′、Q′、I和T

1)对混沌序列Z进行非线性离散化。根据公式(2)、(3)得到含2168个元素的0-1序列S,S={0,1,0,1,…,1}。

2)设混沌序列X的子集X′={x1,x2,x3,...,x10000}中元素的索引号序列{1,2,3,...,10000}为序列J。将组元(xn,jn)以xn为主要关键字进行升序排序,将排序后的序列J记为序列Q,Q={2,4,6,...,2167,1}。

3)设混沌序列Y的子集Y′={y1,y2,y3,…,y10000}中元素的索引号序列{1,2,3,...,10000}为序列J′。将组元(yn,jn′)以yn为主要关键字进行升序排序,将排序后的序列J′记为序列Q′,Q′={2,4,6,...,2167,1}。

4)设混沌序列Z的子集Z′={z1,z2,z3,…,z10000}的索引号序列{1,2,3,...,10000}为序列I。将组元(zn,in)以zn为主要关键字进行升序排序,将排序后的序列I记为序列T,T={5,7,9,…,3,1}。

步骤16:进行头文件置乱。

根据公式(14)对cellsize=5、xllcorner=390996和yllcorner=3274219进行置乱加密操作,得到置乱加密数据Scellsize=1140697、Sxllcorner=1347720和Syllcorner=2134583。

步骤17:进行高程置乱。

1)以m=15,n=98为例。将该点处的高程值202用14位的二进制数表示为00000011001010,记为Cmn(m、n分别为行列号,m∈[1,935],n∈[1,1220])。

2)m+n=113为奇数,则将低7位与高7位进行交换,得到10010100000001。选取离散化产生的部分序列S113,S114,S115,…,S126与Cmn异或,即将01010101010101与10010100000001进行异或。

3)将异或后的结果11000001010100转化为十进制,得到变化后的高程值C′mn=12372。

4)基于C′mn,根据公式(5)生成临时变量b=2372。

5)在序列T中遍历寻找到值为b的元素,其序列号serialID=7368,则根据公式(6)计算C′mn=17368。

6)对矩阵A中的每一点都进行如上操作,得到新矩阵A′。其中m和n为对应的行号与列号。

步骤18:进行位置置乱。

1)以m=15,n=98为例,根据公式(7),利用矩阵A′中的元素C″mn的行号m生成临时变量p=15。

2)遍历寻找序列Q中与p值相等的元素,其下标serialID′=1095,则根据公式(8),生成m′=1095。

3)根据公式(9),利用矩阵A′中的元素C″mn的列号n生成p′=98。

4)遍历寻找序列Q′中与p′值相等的元素,其下标serialID″=48,则根据公式(10),生成n′=48。

5)从首行首列开始逐个将A′中元素C″mn与C″m′n′位置互换,得到矩阵A″。A″即为对DEM置乱后的最终结果。

步骤19:基于置乱加密后的数据,生成置乱加密后的txt文件。

步骤20:基于ArcMap软件,通过“ArcToolbox->转换工具->转为栅格->ASCII转栅格”操作,将txt文件转换为Esri Grid格式的DEM数据,完成DEM的还原处理。置乱后的效果在ArcScene中查看,如图3。

2.还原过程

步骤21:基于ArcMap软件,通过“ArcToolbox->转换工具->由栅格转出->栅格转ASCII”操作,将DEM数据转化为ASCII编码的txt文件。

步骤22:首先,读取txt格式的DEM数据的文件头。其中Scellsize=1140697、Sxllcorner=1347720和Syllcorner=2134583。,将相关参数保存。其次,读取各点高程值。该实例中开辟的是935行,1220列的二维阵列。

步骤23:生成混沌序列。

输入三维混沌序列的初值x1=0.23,y1=0.24,z1=0.25。设置σ=0.45,ρ=10000。

步骤24:根据公式(1),生成序列长度为2168的混沌序列X,X={0.21,0.97,0.81,…,0.88}、序列长度为2168的混沌序列Y,Y={0.32,0.94,0.63,…,0.77}和序列长度为2168的混沌序列Z,Z={0.44,0.91,0.45,…,0.67}。

步骤25:获取序列S、J、Q、J′、Q′、I和T

对混沌序列Z进行非线性离散化。根据公式(2)和(3)得到含2168个元素的0-1序列S,S={0,1,0,1,…,1}。

2)设混沌序列X的子集X′={x1,x2,x3,...,x10000}中元素的索引号序列{1,2,3,...,10000}为序列J。将组元(xn,jn)以xn为主要关键字进行升序排序,将排序后的序列J记为序列Q,Q={2,4,6,...,2167,1}。

3)设混沌序列Y的子集Y′={y1,y2,y3,...,y10000}中元素的索引号序列{1,2,3,...,10000}为序列J′。将组元(yn,jn′)以yn为主要关键字进行升序排序,将排序后的序列J′记为序列Q′,Q′={2,4,6,...,2167,1}。

4)设混沌序列Z的子集Z′={z1,z2,z3,...,z10000}的索引号序列{1,2,3,...,10000}为序列I。将组元(zn,in)以zn为主要关键字进行升序排序,将排序后的序列I记为序列T,T={5,7,9,…,3,1}。

步骤26:头文件还原。

根据公式(14)对Scellsize=1140697、Sxllcorner=1347720和Syllcorner=2134583进行还原操作,得到还原数据cellsize=5、xllcorner=390996和yllcorner=3274219。

步骤27:位置置乱还原。

具体过程如下:

1)以m′=1095,n′=48为例,根据公式(12),利用矩阵A″中的元素C″m′n′的行号m′=1095生成serialID′=1095。其中m′和n′为对应的行号与列号。

2)寻找序列Q中索引号为serialID′的元素,生成p=15,则根据公式(13),生成m=15。

3)根据公式(14),利用矩阵A″中的元素C″m′n′的列号n′=48,生成serialID″=48。

4)寻找序列Q′中序列号为serialID″的元素,其值p′=98,则根据公式(15),生成n=98。

5)从末行末列逐个往前将A′中元素C″m′n′与C″mn互换,得到矩阵A′。其中m和n为A′中对应的行号与列号。

步骤27:高程还原。

1)以m=15,n=98,对应高程为17368为例,根据公式(16)生成serialID=7368。

2)寻找序列A′中索引号为serialID的元素,其值b=2372,则根据公式(17),得到C′mn=12372。

3)将C′mn用14位的二进制数表示,其中m∈[1,M],n∈[1,N]。

4)选取离散化产生的部分序列S113,S114,S115,…,S126与Cmn异或,即将01010101010101与11000001010100进行异或,得到10010100000001,因为m+n为奇数,所以交换前七位和后七位得到00000011001010。

3)将异或后的结果转化为十进制,得到变化后的高程值C′mn=202;

5)将变换后的高程值转化为十进制,得到矩阵A,A即为还原后的最终结果。

步骤28:基于还原处理后的数据,生成还原后的DEM的txt文件。

步骤29:在ArcMap中用ArcToolbox->转换工具->转为栅格->ASCII转栅格,将ASCII编码的txt文件转化为Esri Grid格式显示。本实例选取的数据在ArcScene中三维显示如图4。

本发明的有益效果:通过针对DEM数据的置乱加密与还原处理,可安全、高效地解决DEM数据的安全传输与封装存贮环节中的地理信息安全问题。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1