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

文档序号:11156091阅读:来源:国知局

技术特征:

1.一种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}};

<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>x</mi> <mi>k</mi> </msub> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <msub> <mi>y</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <msub> <mi>z</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mi>mod</mi> <mn>1</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>y</mi> <mi>k</mi> </msub> <mo>=</mo> <mrow> <mo>(</mo> <mn>2</mn> <msub> <mi>x</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <mn>2</mn> <msub> <mi>y</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <mn>2</mn> <msub> <mi>z</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mi>mod</mi> <mn>1</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>z</mi> <mi>k</mi> </msub> <mo>=</mo> <mrow> <mo>(</mo> <mn>3</mn> <msub> <mi>x</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <mn>3</mn> <msub> <mi>y</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <mn>3</mn> <msub> <mi>z</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mi>mod</mi> <mn>1</mn> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> <mrow> <mo>(</mo> <mi>k</mi> <mo>&GreaterEqual;</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>

步骤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};

<mrow> <msub> <mi>s</mi> <mn>1</mn> </msub> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mn>0</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <msub> <mi>z</mi> <mn>1</mn> </msub> <mo>&lt;</mo> <mi>&sigma;</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>1</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <msub> <mi>z</mi> <mn>1</mn> </msub> <mo>&GreaterEqual;</mo> <mi>&sigma;</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> <mrow> <mo>(</mo> <mi>k</mi> <mo>=</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msub> <mi>s</mi> <mi>k</mi> </msub> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mn>0</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <msub> <mi>z</mi> <mi>k</mi> </msub> <mo>&lt;</mo> <msub> <mi>z</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>1</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <msub> <mi>z</mi> <mi>k</mi> </msub> <mo>&GreaterEqual;</mo> <msub> <mi>z</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> <mrow> <mo>(</mo> <mi>k</mi> <mo>&GreaterEqual;</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> <mo>;</mo> </mrow>

步骤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

<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>s</mi> <mrow> <mi>c</mi> <mi>e</mi> <mi>l</mi> <mi>l</mi> <mi>s</mi> <mi>i</mi> <mi>z</mi> <mi>e</mi> </mrow> </msub> <mo>=</mo> <mi>c</mi> <mi>e</mi> <mi>l</mi> <mi>l</mi> <mi>s</mi> <mi>i</mi> <mi>z</mi> <mi>e</mi> <mi> </mi> <mi>x</mi> <mi>o</mi> <mi>r</mi> <mi> </mi> <mi>M</mi> <mi>N</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>s</mi> <mrow> <mi>x</mi> <mi>l</mi> <mi>l</mi> <mi>c</mi> <mi>o</mi> <mi>r</mi> <mi>n</mi> <mi>e</mi> <mi>r</mi> </mrow> </msub> <mo>=</mo> <mi>x</mi> <mi>l</mi> <mi>l</mi> <mi>c</mi> <mi>o</mi> <mi>r</mi> <mi>n</mi> <mi>e</mi> <mi>r</mi> <mi> </mi> <mi>x</mi> <mi>o</mi> <mi>r</mi> <mi> </mi> <mi>M</mi> <mi>N</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>s</mi> <mrow> <mi>y</mi> <mi>l</mi> <mi>l</mi> <mi>c</mi> <mi>o</mi> <mi>r</mi> <mi>n</mi> <mi>e</mi> <mi>r</mi> </mrow> </msub> <mo>=</mo> <mi>y</mi> <mi>l</mi> <mi>l</mi> <mi>c</mi> <mi>o</mi> <mi>r</mi> <mi>n</mi> <mi>e</mi> <mi>r</mi> <mi> </mi> <mi>x</mi> <mi>o</mi> <mi>r</mi> <mi> </mi> <mi>M</mi> <mi>N</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>

步骤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数据。

2.一种用权利要求1所述的DEM的置乱加密方法置乱加密后的DEM置乱的还原方法,包括如下步骤:

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

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

<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>c</mi> <mi>e</mi> <mi>l</mi> <mi>l</mi> <mi>s</mi> <mi>i</mi> <mi>z</mi> <mi>e</mi> <mo>=</mo> <msub> <mi>s</mi> <mrow> <mi>c</mi> <mi>e</mi> <mi>l</mi> <mi>l</mi> <mi>s</mi> <mi>i</mi> <mi>z</mi> <mi>e</mi> </mrow> </msub> <mi> </mi> <mi>x</mi> <mi>o</mi> <mi>r</mi> <mi> </mi> <mi>M</mi> <mi>N</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>x</mi> <mi>l</mi> <mi>l</mi> <mi>c</mi> <mi>o</mi> <mi>r</mi> <mi>n</mi> <mi>e</mi> <mi>r</mi> <mo>=</mo> <msub> <mi>s</mi> <mrow> <mi>x</mi> <mi>l</mi> <mi>l</mi> <mi>c</mi> <mi>o</mi> <mi>r</mi> <mi>n</mi> <mi>e</mi> <mi>r</mi> </mrow> </msub> <mi> </mi> <mi>x</mi> <mi>o</mi> <mi>r</mi> <mi> </mi> <mi>M</mi> <mi>N</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>y</mi> <mi>l</mi> <mi>l</mi> <mi>c</mi> <mi>o</mi> <mi>r</mi> <mi>n</mi> <mi>e</mi> <mi>r</mi> <mo>=</mo> <msub> <mi>s</mi> <mrow> <mi>y</mi> <mi>l</mi> <mi>l</mi> <mi>c</mi> <mi>o</mi> <mi>r</mi> <mi>n</mi> <mi>e</mi> <mi>r</mi> </mrow> </msub> <mi> </mi> <mi>x</mi> <mi>o</mi> <mi>r</mi> <mi> </mi> <mi>M</mi> <mi>N</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>11</mn> <mo>)</mo> </mrow> <mo>;</mo> </mrow>

步骤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的还原处理。

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