发明名称 文件混序分割存储与合成互验的方法
摘要 本发明提供了一种文件混序分割存储与合成互验的方法,其特征在于,包括以下步骤:A:文件混序步骤;B:幻方加密步骤;C:文件恢复及互验步骤。该文件混序分割存储与合成互验的方法安全性好,效率高,且具有互验功能。使用本发明,具有以下优点,文件分割的无序性,幻方加密算法的高安全性,文件合成时的自身完整性和互完整性验证。
申请公布号 CN101840485B 申请公布日期 2015.07.08
申请号 CN201010177099.4 申请日期 2010.05.19
申请人 韩萧;马代武;王启萱;王钰水 发明人 韩萧;马代武;王启萱;王钰水;谢涛;韩维峰;肖屈瑶;李若豫;马博;张燕;王雨桃;王丽;王丽宾
分类号 G06F21/64(2013.01)I 主分类号 G06F21/64(2013.01)I
代理机构 长沙市融智专利事务所 43114 代理人 黄美成
主权项 一种文件混序分割存储与合成互验的方法,其特征在于,包括以下步骤:A:文件混序步骤;B:幻方加密步骤;C:文件恢复及互验步骤;所述的文件混序步骤为:步骤1:位置确定:将源码文件F以字符为单位存入一个n*16的矩阵L,n为字符数,矩阵L中的元素表示为a<sub>i,j</sub>,其中i=1,2,3,...,n;j=1,2,...,16;步骤2:设定文件分块数x;步骤3:产生x个16阶的随机幻方M<sub>l</sub>,l=1,2,3,...,x;将产生的第一个随机幻方的首行中的元素存入集合H=(h<sub>1</sub>,h<sub>2</sub>,...h<sub>16</sub>);步骤4:位置混序:首先确定集合K<sub>e</sub>:将步骤1中的矩阵L分为16个集合K<sub>e</sub>,e=1,2,3,...,16,,每个集合K<sub>e</sub>的首元素对应矩阵L中第一行的元素a<sub>1,j</sub>,j=1,2,3,...,16;当e=2k+1,k=0,1,2,3,...,7时,K<sub>e</sub>中首元素后面的其他元素为矩阵L中以该首元素所在的主对角线上的所有元素;当e=2m,m=1,2,3,...,8时,K<sub>e</sub>中首元素后面的其他元素为矩阵L中以该首元素所在的副对角线上的所有元素;然后,将K<sub>e</sub>向左或向右平移h<sub>i</sub>个单位,其中h<sub>i</sub>为集合H中的元素;当其中某一个元素移到集合的尽头时,由于位置不够,还有未移完的步数,则需要将此元素移到原集合的首位,再把剩下的步数全部移完,依照此法将所有的元素都平移到位;当e=2k+1,k=0,1,2,3,...,7时,将K<sub>e</sub>中的元素向右平移h<sub>i</sub>个单位;当e=2m,m=,1,2,3,...,7时,将Ke中的元素向左平移h<sub>i</sub>个单位;最后,将Ke中新的元素对应回原来矩阵的位置,得到一个混序的矩阵;步骤5:文件分割:将步骤4的位置混序后的文件按顺序分割为x个子文件F<sub>j</sub>,其中j=1,2,3,…,x;所述的幻方加密步骤为:步骤1:先将分割后的文档F<sub>j</sub>转换成ASCII码,再将其转换成二进制;从而构造成明文矩阵W<sub>l</sub>,l=1,2,3,…x;步骤2;将明文矩阵W<sub>l</sub>对应的幻方M<sub>l</sub>中的每个元素转换为二进制值,再将明文矩阵W<sub>l</sub>中的每个元素与幻方M<sub>l</sub>中对应的元素的二进制值进行异或运算,得到第一次密文矩阵U<sub>l</sub>;步骤3:将第一次密文矩阵U<sub>l</sub>的元素采用幻方M<sub>l</sub>作为调序规则进行调序,即将幻方中每个元素的数值所对应的密文矩阵中该数值号的元素调序到幻方中该元素的位置,得到第二次密文矩阵<img file="FDA0000668149710000021.GIF" wi="69" he="86" />,由<img file="FDA0000668149710000022.GIF" wi="74" he="86" />组成密文分块F<sub>j</sub><sup>*</sup>,加密完成;所述的文件恢复及互验步骤为:步骤1:将密文分块F<sub>j</sub><sup>*</sup>运用SHA2‑256算法生成一个记录F<sub>j</sub><sup>*</sup>特征的256位0‑1序列h<sub>j</sub>,即为散列值h<sub>j</sub>;步骤2:将所产生的x个随机幻方M<sub>l</sub>进行模和运算得到互完整性校验矩阵M2;步骤3:用得到的0‑1序列h<sub>j</sub>对随机幻方M<sub>l</sub>进行洗牌得到认证矩阵M<sub>l</sub>*,具体操作为:从一组具有内部数学关系的可校验的n1个有序数字序列中按序随机抽取其中约一半数字,按先后次序排成一组数字序列,并将该序列置于所剩数字序列之后,构成一个新的数字序列,称该数字序列重组过程为随机洗牌过程,重组数字序列称为洗牌结果,其中按序均匀随机抽取数字的方案由一n1元0‑1二进制表示,并称之为洗牌方案;步骤4:将密文分块F<sub>j</sub><sup>*</sup>和M<sub>i</sub>*一起封装发送到各分布式终端,其中,i∈{1,2,3,...,x},j≠i;步骤5:如果存有某一文件分块F<sub>i</sub>的终端Z<sub>i</sub>有提取文件F的需求,将F<sub>i</sub>的散列值h<sub>j</sub>广播发送至存有F文件其他分块的终端Z<sub>j</sub>,j∈{1,2,3,...,x},j≠i,终端Z<sub>j</sub>通过其所保存的认证矩阵验证其所接收的散列值h<sub>j</sub>是否正确,如果验证正确,终端Z<sub>j</sub>则将其存储的文件分块F<sub>j</sub>传送至此次文件的提取终端Z<sub>i</sub>;步骤6:如果已经收到全部文件分块{F<sub>j</sub>,j≠i},由文件提取终端Z<sub>i</sub>分别计算各分块F<sub>j</sub>的散列值h<sub>j</sub>,利用h<sub>j</sub>通过逆洗牌和反调序过程将各文件分块F<sub>j</sub>的相应随机幻方M<sub>l</sub>分别从相应的认证矩阵M<sub>l</sub>*中提取出来,然后计算<img file="FDA0000668149710000031.GIF" wi="748" he="144" />验证M*是否是幻方,如果M*是幻方,则所有文件分块的自完整性与互完整性均满足,可以成功合成完整文件;否则,自完整性与互完整性均不满足,文件不能成功合成;如文件可以合成,首先将文件F<sub>j</sub><sup>*</sup>进行解密得到F<sub>j</sub>,解密方法即为加密方法的逆步骤,再将F<sub>j</sub>合成得到混序后的文件,最后将混序后的文件恢复成矩阵L,恢复操作为混序的逆步骤,从而恢复出文件F。
地址 410000 湖南省长沙市国防科技大学3号院9院2大队7队