发明名称 一种GIS矢量线面图层数据的置乱与还原方法
摘要 本发明公开了一种GIS矢量线面图层数据的置乱与还原方法,属于地理信息安全领域。该方法包括如下过程:(1)置乱过程,逐个读取矢量地图中每个要素的点坐标并设置其ID号,基于分形模型席尔宾斯基垫片进行ID号的置乱,实现对每个要素的点在要素点集合中的位置进行重新排列;(2)还原过程,逐个读取置乱后的矢量地图中每个要素的点坐标并设置其ID号,再次运用分形模型席尔宾斯基垫片进行ID号置乱后的还原处理,实现对每个要素的点坐标在要素点集合中的位置进行重新排列。本发明针对GIS矢量数据存贮特点,基于分形模型席尔宾斯基垫片加密,该方法可有效提高GIS矢量数据在数据传输、发行过程中的安全性。
申请公布号 CN103077211B 申请公布日期 2016.05.04
申请号 CN201210584651.0 申请日期 2012.12.28
申请人 南京师范大学 发明人 李安波;吴雪荣;吴赛松;蒋伟
分类号 G06F17/30(2006.01)I;H04L9/28(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 南京知识律师事务所 32207 代理人 李媛媛
主权项 一种GIS矢量线面图层数据的置乱与还原方法,包括如下过程:(一)置乱过程步骤11:加载一幅线面类型的矢量地图R,并且输入混沌系统的初值q<sub>0</sub>和级数l作为参数,存为密钥文件key,其中级数l大于0;步骤12:参数设置与分组,a)分形模型席尔宾斯基垫片初始图形的边数为3,根据级数l和公式(1)和(2)确定密钥长度Kl<sub>l</sub>和明文分组长度El<sub>l</sub>,按照每个小三角形的高的长度作为一个等级从上到下依次分为l级,<maths num="0001"><math><![CDATA[<mrow><msub><mi>Kl</mi><mi>l</mi></msub><mo>=</mo><msup><mn>3</mn><mrow><msub><mi>log</mi><mn>2</mn></msub><mi>l</mi></mrow></msup><mrow><mo>(</mo><mi>l</mi><mo>&gt;</mo><mn>0</mn><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000850191410000011.GIF" wi="1364" he="78" /></maths>El<sub>l</sub>=3×Kl<sub>l</sub>(l&gt;0)  (2)b)根据密钥长度Kl<sub>l</sub>,确定明文分组,依次读取矢量地图R中每个要素的点坐标,设置点ID号,将点ID号作为明文信息,记明文总长度为Elength,按照公式(3)和点ID号进行分组,每组长度为El<sub>l</sub>,共分为L组,如果最后剩余一组明文不足长度El<sub>l</sub>,该组长度用a表示,<img file="FDA0000850191410000012.GIF" wi="1358" he="78" />a=mod(Elength,El<sub>l</sub>)  (4)c)根据明文总长度Elength生成密钥并分组,一组明文对应一组密钥,一组密钥长度为Kl<sub>l</sub>,所以L组明文需要密钥总长度M,M=L×Kl<sub>l</sub>  (5)①基于公式(6)和设置的参数[k,q<sub>0</sub>],根据密钥总长度M,生成长度同样为M的混沌序列Q={q<sub>i</sub>|i=0,1,2,...,n},其中k表示混沌系数,3.5699≤k≤4,q<sub>n+1</sub>=k*q<sub>n</sub>‑k*q<sub>n</sub><sup>2</sup>  (6)②二值化混沌序列:根据公式(7)将混沌序列Q量化得到的一维二值混沌位置序列K作为密钥序列,其中,K={k<sub>i</sub>|i=0,1,2,...,n};<img file="FDA0000850191410000013.GIF" wi="1447" he="157" />步骤13:各分组数据的置乱处理,a)处理所有完整明文组的加密:将明文信息依次分组,把第j组密钥k<sub>i</sub>按照从上到下从左到右的顺序放入模型中顶角向上的小三角形内部,将第j组明文e<sub>i</sub>按照从上到下从左到右的顺序依次放入顶角向上的小三角形的三条边上;如果密钥k<sub>i</sub>为“0”,则将对应的小三角形边上的明文e<sub>i</sub>顺时针旋转1次;如果密钥k<sub>i</sub>为“1”,将该小三角形顺时针旋转2次,每个小三角形的三条边上的明文在对应密钥的控制旋转下得到密文,模型中每个小三角形都旋转完之后,再按照从上到下从左到右的顺序取密文值,就可以得到一组密文序列c<sub>i</sub>,以此类推,每一组完整明文和密钥利用模型生成密文序列c<sub>i</sub>={e<sub>j</sub>},b)处理剩下不足一组明文的加密:当剩下明文不足一次能加密的位数,使某些小三角形边上的明文个数&lt;3,则该小三角形在加密过程中不做旋转,但是该小三角形前面所有的小三角形同样按照步骤13a)中的旋转规则进行旋转,这一轮还是按照从上到下从左到右的顺序将小三角形边上的数据作为密文c<sub>i</sub>存储起来;步骤14:重复步骤12至步骤13,直到每个要素处理完毕后,从而实现了对每个要素中的点的ID号及其在要素点集合中的位置进行重新排列,并且保存置乱后的数据文件Rˊ;(二)还原过程步骤21:打开置乱后的数据文件Rˊ,从密钥文件Key中读取混沌系统的初值q<sub>0</sub>和级数l;步骤22:参数设置与分组,a)分形模型席尔宾斯基垫片初始图形的边数为3,根据级数l和公式(1)、(2)确定密钥长度Kl<sub>l</sub>,密文分组长度El<sub>l</sub>,b)根据密钥长度Kl<sub>l</sub>,确定密文分组,依次读取数据文件Rˊ中每个要素的点坐标,设置点ID号,将点ID号作为密文信息,记密文总长度为Elength,按照公式(3)和点ID号进行分组,每组长度为El<sub>l</sub>,共分为L组,如果最后剩余一组密文不足长度El<sub>l</sub>,根据公式(4)计算最后一组长度a,c)根据密文总长度Elength生成密钥并分组,一组密文对应一组密钥,一组密钥长度为Kl<sub>l</sub>,根据公式(5)可以得到L组密文需要密钥总长度M,①基于公式(6)和设置的参数[k,q<sub>0</sub>],根据密钥总长度M,生成长度同样为M的混沌序列Q={q<sub>i</sub>|i=0,1,2,...,n},其中k表示混沌系数,3.5699≤k≤4,②二值化混沌序列:根据公式(7)将混沌序列Q量化得到的一维二值混沌位置序列K作为密钥序列,步骤23:各分组数据的还原处理,a)处理所有完整密文组的解密:将密文信息依次分组,把第j组密钥k<sub>i</sub>按照从上到下从左到右的顺序放入模型中顶角向上的小三角形内部,将第j组密文c<sub>i</sub>按照从上到下从左到右的顺序依次放入顶角向上的小三角形的三条边上,如果密钥k<sub>i</sub>为“0”,则将对应的小三角形边上的密文c<sub>i</sub>顺时针旋转2次;如果密钥k<sub>i</sub>为“1”,将该小三角形顺时针旋转1次,每个小三角形的三条边上的密文在对应密钥的控制旋转下得到明文,模型中每个小三角形都旋转完之后,再按照从上到下从左到右的顺序取明文值,就可以得到一组明文序列e<sub>i</sub>,以此类推,每一组完整密文和密钥利用模型生成明文序列e<sub>i</sub>={c<sub>j</sub>},b)处理剩下不足一组密文的解密:当剩下密文不足一次能解密的位数,使某些小三角形边上的密文个数&lt;3,则该小三角形在解密过程中不做旋转,但是该小三角形前面所有的小三角形同样按照步骤23a)中的旋转规则进行旋转,这一轮还是按照从上到下从左到右的顺序将小三角形边上的数据作为明文e<sub>i</sub>存储起来;步骤24:重复步骤22至步骤23,直到每个要素处理完毕后,从而实现了对每个要素中的点的ID号及其在要素点集合中的位置进行重新排列,并且保存还原后的数据文件R。
地址 210097 江苏省南京市鼓楼区宁海路122号