发明名称 一种动态矩阵排列加密方法
摘要 用于数据加密的一种动态矩阵排列加密方法,涉及用密匙控制进行数据加密与解密相关技术,一加密方法包括:矩阵排列、分组排列、异或运算。具体讲,是一种对称分组加密方法,是取该加密算法的明文(Plaintext)P的长度为32,768比特,明文数据Pi=P1 P2 P3……P32767 P32768;设密匙(Keys)K的长度为65536比特,密匙的数据Ki=K1 K2 K3……K65535 K65536。加密过程可表达为:C=Ipi*X32*X31*X30…(ek)…X3*X2*X1*Ipi。解密过程可以表达为:P=IP-i*X1*X2*X3…(dk)…*X30*X31*X32*IP-I,其中Ipi是输入矩阵排列,Ipi是它的逆矩阵排列,本发明基本原理公开,清楚易懂,安全性高、通用性强。
申请公布号 CN1402465A 申请公布日期 2003.03.12
申请号 CN02115081.8 申请日期 2002.04.10
申请人 李新全 发明人 李新全
分类号 H04L9/00 主分类号 H04L9/00
代理机构 深圳市千纳专利代理有限公司 代理人 胡坚
主权项 1、用于数据加密的一种动态矩阵排列加密方法,其特征在于,所述动态矩阵排列加密方法包括以下步骤:A、选取明文(plaintext)P为32768比特的数据,如果长度不足32768比特则填充随机数据使它满足32768比特;B、设密匙K为65536比特,如果长度不足65536比特,则把密匙K加长为65536比特;把65536比特的K分成32768个子块,每一个子块2比特,令这32769个子块为密匙流Kxi,其表示为:KXi=KX1,KX2,KX3,KX4……KX32767,KX32768,KX32769;C、IP矩阵排列:把32768比特的明文数据按每比特、每个位置的顺序排入32纵32行32列的正方型的矩阵中;从每个纵中的32行32列的矩阵中提取出1024个不同行和列的值的阵矩;开始加密:a首先定义,利用KXi中的值来确定每个矩阵中的不同排列方式。密匙的值为(0、1、2、3)表格中的排列分别为,当值为0时排列不变;当值为1时排列矩阵按顺时针的方向转动一下,即原来的行变成列,原来的列变成行;当值为2时排列矩阵按顺时针的方向转动两下,即上行变成下行,右列变成左列,当值为3时排列矩阵按逆时针的方向转动一下,即原来的列变成行,原来的行变成列;b、把正方型的矩阵的六个面都定义一个值,分别用A、B、C、D、E、F来表示;从密匙K中指定的位置提取12个比特的数据,把这12比特分成6组每组2比特,再把(A)、(B)、(C)、(D)、(E)、(F)排成3行2列的表格形式,再用这6组密匙对这个表格,把表格分成(A)、(B)、(C)、(D)和(C)、(D)、(E)、(F)两个交叉的表格然后再进行6次排列运算运算方法用a的方法进行排列,输出正方型的阵矩的六个面的顺序表;(1)对正方型的矩阵排列运算,从顺序表中的第一个面开始。(2)把该面32乘32的矩阵分成32乘32、16乘16、8乘8、4乘4、2乘2的各种表格,并把密匙流分成32段,每个纵用一段,每次对不同的纵的排列密匙流都不同;①、用该段的第1个密匙的值对32乘32的表格用(a)的方法进行排列;②、用该段的第2到该段的第10个密匙的值对16乘16的表格用a的方法进行排列,32乘32的表格分成9个16乘16的表格;③、用该段的第11到该段的第75个密匙的值对8乘8的表格用a的方法进行排列,32乘32的表格分成64个8乘8的表格;④、用该段的第76到该段的第300个密匙的值对4乘4的表格用a的方法进行排列,32乘32的表格分成224个4乘4的表格;⑤、用该段的第300到……个密匙的值对2乘2的表格用的a方法进行排列,32乘32的表格分成960个2乘2的表格;(3)跳回(2)继续对下一个纵值进行排列,每次推进下一个纵;(4)当32个纵向中的表格都排列完毕时跳回(1)继续对下一个面进行排列,并把密匙流从最高位向最低位移动6分之1,把移出的6分之1补到高位处。如果6个面都完成了就结束IP矩阵排列;D、把排列完的明文P数据分组:分组:32768比特的明文数据块分成1024个子块,每一子块32比特,令这1024个子块为明文子块PXi表示为:PXi=PX1,PX2,PX3,PX4……PX1022,PX1023,PX1024;E、子密匙分组:把65536比特的Ki分成两个不同的组,每组为1024个子块,每一子块32比特,令这1024个子块为第1组:K1Xi=K1X1,K1X2,K1X3,K1X4……K1X1022,K1X1023,K1X1024;第2组:K2Xi=K2X1,K2X2,K2X3,K2X4 … …K2X1022,K2X1023,K2X1024;F、用第一组密匙K1Xi与排列后的明文子块PXi进行异或运算(^)运算,一共1024组运算;G、把经过F步骤加密后的明文子块PX1与经过F步骤加密后的明文子块PX2进行异或运算(^),经过F步骤加密后的明文子块PX3与经过F步骤加密后的明文子块PX4进行异或运算(^)……经过F步骤加密后的明文子块PX1023与经过F步骤加密后的明文子块PX1024进行异或运算(^),一共512组运算;H、下面的明文子块..全部为经过G步骤后的值:明文子块PX1与明文子块PX2进行异或运算(^)运算其值去替换原本明文子块PX1的值,明文子块PX2与明文子块PX3进行异或运算(^)运算其值去替换原本明文子块PX2的值,明文子块PX3与明文子块PX4进行异或运算(^)运算其值去替换原本明文子块PX3的值,明文子块PX1021与明文子块PX1022进行异或运算(^)运算其值去替换原本明文子块PX1021的值,明文子块PX1022与明文子块PX1023进行异或运算(^)运算其值去替换原本明文子块PX1022的值,明文子块PX1023与明文子块PX1024进行异或运算(^)运算其值去替换原本明文子块PX1023的值;I、用第二组密匙K2Xi与经过h步骤后明文子块PXi进行异或运算(^)运算,一共1024组。I、下面的明文子块..全部为经过I步骤后的值:明文子块PX1与明文子块PX1024进行异或运算(^)运算产生一个值P1,明文子块PX2与值P1进行异或运算(^)运算产生一个值P2,明文子块PX3与值P2进行异或运算(^)运算产生一个值P3,明文子块PX1021与值1020进行异或运算(^)运算产生一个值P1021,明文子块PX1022与值1021进行异或运算(^)运算产生一个值P1022,明文子块PX1023与值1022进行异或运算(^)运算产生一个值P1023。最后把明文子块PX1024的值替换为P1023的值;K、再次调用(c)矩阵排列算法,把密匙流并把密匙流从最高位向最低位移动2分之1,把移出的2分之1补到高位处,再用该密匙流对经过j步骤后明文子块PXi进行排列运算;L、把第2组的密匙与第1组的密匙之间做子异或(^)运算,把值再用矩阵排列算法,密匙流用上面同样的值进行排列运,再用它的值与经过J步骤后明文子块PXi进行异或(^)运算。M、加密结束,输出密文(ciphertext)为32768比特的数据,加密结束。
地址 福建省建阳市水吉镇新华路65号