动态映射加密的方法

文档序号:7895454阅读:391来源:国知局
专利名称:动态映射加密的方法
技术领域
本发明涉及一种利用随机自同步流密码对数字信息加密的方法。
背景技术
随着计算机速度的不断提高,当前对称加密算法不断受到挑战,甚至已被破解,这 需要加密强度更高的方法来取代现有的加密方法。另一方面虽然自同步流密码系统具有 较高的加密强度,但这些方法在应用到通信中时,为了纠错,往往需要向密文中加入冗余信 息,并且对当前密文字的解密仅仅依赖于固定个数的以前的密文字,这为破解提供了可能。

发明内容
本发明正是针对以上两方面的问题而产生。根据本发明的一个方面,提供一种加密方法,其加密流程如下1初始化利用初始密钥对数列P、映射池数列W赋予初始数据2针对第i组明文进行下列计算{①利用数列P中的数据作非线性运算得到密钥ki;用密钥Iii对第i个明文组、加密,得到第i个密文组Ci,②按照某种算法,利用明文组、或密文组Ci更新映射池数列W中的数据,③按照某种算法,计算映射参数,根据映射参数从映射池数列W中读取被映射的数据Wi,④按照某种算法,利用数据Wi对数列P进行更新。}根据本发明的一个方面,提供一种加密方法,其加密流程如下1初始化利用初始密钥对数列P、数列Q、数列K、映射池数列W赋予初始数据2针对第i组明文进行下列计算{①利用数列P、数列Q、数列K中的数据作非线性运算得到密钥ki;用密钥Iii对第i个明文组、加密,得到第i个密文组Ci,②按照某种算法,利用明文组、或密文组Ci更新映射池数列W中的数据,③按照某种算法,计算映射参数,根据映射参数从映射池数列W中读取被映射的数据Wi,④按照某种算法,利用数据Wi对数列P、数列Q、数列K进行更新。}根据本发明的一个方面,提供一种加密方法,其加密流程如下1输入初始密钥Key,并利用初始密钥Key产生数列K,产生256个大于65536且mod256为255的质数数列B,
5
/*...假设密钥Key长度为L(L > 8)字节,...*/2针对第i组明文进行下列计算{. . (0 ^ i
<L) · · · */p[i] = ((k[ (i+1) % L] +i+1)((k[(i+2)%L)%L+1)*(k[ (i+2) % L] +2)((k[(i+3)%L])%L+3)*(k[ (i+3) % L]+3)) % b[i]a = p[i] % Lq[i] = (k[(i+5)%L]+l)(瞧+8)%L])%L+i) + (k[(i+6)%L]+2)(嫌+9)%L]+i)%L)+(k[(i+7) % L]+3)a% b[i+L]w[i] = (p[i]/256+L)*(q[i]/256+l+i)) % b[i+2*L] % 256p[i] = p[i] % 256q[i] = q[i] % 256i = i+1/*...其中 P [i]、q[i]、b [i]、k[i]、w[i]分别表示数列 P、数列 Q、数列 B、数列K、数列W中的第i个数据,其中数列P中的数据将在用作指数,数列Q中的数据将在后面用作系数,这里是对数列P、数列Q、数列W进行初始化,本文中用” % ”表示mod,” “ ”表示异或......*/}针对i用一个循环进行下列计算{/*·· · (L < i
<M) · · · */w[i] = ((w[i-6] +1)(w[i-5] +2)w[i"2]+ (w[i-4] +1)w[i"1]+w[i-3]) %(b[i% 256]) % 256i = i+1}/*...其中w[i]表示数列W中的第i个数据,M为某一常数,如M =1048576. . . */3设置ζ= L,ν = a,C = L计算r = g-(f% g),产生r+g字节的随机数据并 保存在数列T中,从字节序号为r+g的位置开始,将明文添加在数列T中。/*. . . f为明文的总长度,g为分组的长度,变量ζ用于记录数列W中数据的个 数......*/4针对i用一个循环进行下列计算{/*· · ·第一层循环,(0 彡 i < f+r+g) · · · */针对y用一个循环进行下列计算{/*· · ·第二层循环,(0 彡 y < L) · · · */ν = (q[y]+i)*(k[y]+y) (p[y]% L)+v) % b [ (i+y) % C]y = y+1}ν = v% 256
6
e[i] = (v"t[i]+k[i% L]) % 256
/*...其中P [i]、q[i]、k[i]、t [i]、e [i]分别表示数列P、数列Q、数列K、
数列Τ、数列E中的第i个数据(0彡i < f+r+g),......*/
w[z] = (t[i]+w[z]) % 256
针对η用一个循环进行下列计算
{ /*...第二层循环,(1<η< 10)...*/
如果3 == 0,指针N指向数列P /*...此时N[i]表示p[i]· · ·
如果3 == 1,指针N指向数列Q /*...此时N[i]表示q[i]· · ·
如果3 == 2,指针N指向数列K /*...此时N[i]表示k[i]...
ν = ((N[(i+n) % L]+n) (n+2)+(i+n)(n+3)) % C
u = (vn+(w[v])(n+1)+(i+n)(n+2)) % C
d = (u+i) % C
χ = ((w[u]+l) (n+3) + (w[d]+2)(n+5)) % 65536
w[d] = (w[d]+w[u]) % 256
w [u] = (w [u] "N [ (i+n) % L] +d) % 256
w[z] = w[z]"(x/256)
N[(i+n) % L] = x% 256
η = n+1
}
ζ = (z+1) % M
if (C ! = M-1)C = ζ
i = i+1
}
5利用初始密钥派生具有g个整数的数列H
针对i用一个循环进行下列计算
{ /*· · ·第一层循环,(0 彡 i < f+r+g) · · · */
对数列H中的数据按照从大到小的顺序排序,并将i 列H中的字节数据在排序后
的位置序号记录到由s W],s [1],s [2],s [3],s [4],· · ·,s [i],· · ·构成的整数数列S中, 从数列E中位置序号为i的地方开始读取g个字节与数列H中原有的数据运算,并将运算 结果保存在数列H中,针对j用一个循环进行下列计算{/*· · ·第二层循环,(0 彡 j < g) · · · */e[i] = (e[i]+s[j]) % 256i = i+1j = j+1}}6将r保存在密文数列E中。
具体实施例方式本发明的基本特征是利用生成密钥的参数生成密钥,利用密钥加密明文,以得到 密文,利用明文或密文来更新映射池中的数据,利用生成密钥的参数产生映射的地址参数, 根据地址参数,从映射池中读取数据,然后利用从映射池中读取的数据更新用来生成密钥 的参数。接着,又利用生成密钥的参数生成密钥,利用密钥加密明文,以得到密文,就这样循 环进行。前面所述映射池是一个数列(或者说代码表),并且该数列依据初始密钥、明文和 密文生成。本发明中的映射池可将初始密钥、明文(或密文)的随机性累积起来,并且利用加 密过程中的数据映射用来更新的数据的地址,然后通过地址再找到所需要的数据,这样大 大增强了随机性和复杂度。本发明利用密钥加密明文时,可采用异或、同或、加、减、乘、除、取模等算法来加 密。本发明可在用密钥加密明文之前或生成密文之后,还可对明文或密文进行如下运算可 采用异或、非、与、或等逻辑运算来加密;也可采用加、减、乘、除、乘方、开方、取模及函数等 算术运算来加密;还可采用数学关系运算来加密。前句所说的“数学关系”有大小关系、集 合关系等,其中大小关系包括大于、大于或等于、等于、小于或等于、小于、不等于,集合关系 包括元素与集合之间的关系(属于、不属于)、集合与集合之间的包含、映射关系等,采用数 学关系运算加密是指依据数学关系所建立的加密算法,例如根据加密对象的代码与某一数 据的大小关系来选择密码或加密算法等、根据元素(本文中指加密对象或由加密对象等生 成的代码)与某集合的关系来选择密码或加密算法等、根据映射关系(一一映射或非一一 映射)建立的密码表加密等。为简便起见,本文将用逻辑运算来实现的加密简称为逻辑加 密,将用算术运算来实现的加密简称为算术加密,将采用数学关系运算来实现的加密简称 为数学关系加密。本发明在对信息的加密中既可采用向前移动信息代码位置(后面被移空 的位置既可用前面或后面移出的代码填充,也可用随机码或非随机码填充),又可采用向后 移动信息代码位置(前面被移空的位置既可用前面或后面移出的代码填充,也可用随机码 或非随机码填充),也可采用交换信息代码位置,还可采用按某一规则重新排列信息代码位 置,还可采用向信息代码中插入非随机代码,甚至采用向信息代码中插入随机代码(该随 机代码在解密时可能不需要用穷举法寻找,也可能需要用穷举法寻找)等引起信息代码位 置变化的方式加密信息,本文将这种能引起信息代码位置变化的加密算法叫做变位加密。 本发明既可采用流密码加密、线性加密算法、对称加密算法,又可采用分组加密算法、非线 性加密算法、不对称加密算法,还可利用替代、混淆、扩散、迭代、统计数据加密,甚至使用伪 随机加密和本发明之外的随机加密算法。本发明应用于加密明文时的通用流程如下1初始化利用初始密钥对数列P、数列Q、数列K、映射池数列W赋予初始数据2针对i用一个循环进行下列计算{/*...每循环一次i更新一次,直到加密完成结束循 环·· · */①利用数列P、数列Q、数列K中的数据作非线性运算得到密钥ki;用密钥Iii对第i个明文组、加密,得到第i个密文组Ci,②按照某种算法,利用明文组、更新映射池数列W中的数据,
8
③按照某种算法,计算映射参数,根据映射参数从映射池数列W中读取被映射的数据Wi,④按照某种算法,利用数据Wi对数列中的一个或多个进行更新。}本发明第一个实施例的加密流程如下1输入密钥Key,并利用密钥Key产生数列K,产生256个大于65536且mod256 为255的质数数列B,/*...假设密钥Key长度为L(L > 8)字节,...*/2针对i用一个循环进行下列计算{/*· · · (0 彡 i
< L) ·· · */p[i] = ((k[(i+l)%L]+i+l)((k[(i+2)%L])%L+1)*(k[(i+2)%L]+2)(嫌+3)%L鄉L+3)*(k[(i+3) % L]+3)) % b[i]a = p[i] % Lq[i] = (k[(i+5)%L]+l)(瞧+8)%L])%L+i) + (k[(i+6)%L]+2)(嫌+9)%L]+i)%L)+(k[(i+7) % L]+3)a% b[i+L]w[i] = (p[i]/256+L)*(q[i]/256+l+i)) % b[i+2*L] % 256p[i] = p[i] % 256q[i] = q[i] % 256i = i+1/*...其中 P [i]、q[i]、b [i]、k[i]、w[i]分别表示数列 P、数列 Q、数列 B、数列K、数列W中的第i个数据,其中数列P中的数据将在用作指数,数列Q中的数据将在后面用作系数,这里是对数列P、数列Q、数列W进行初始化,本文中用” % ”表示mod,”"”表示异或......*/}针对i用一个循环进行下列计算{/*· · · (L < i < M). · · */w[i] = ((w[i-6] +1)(w[i-5] +2)w[i"2]+ (w[i-4] +1)w[i"1]+w[i-3]) %(b[i% 256]) % 256i = i+1}/*...其中w[i]表示数列W中的第i个数据,M为某一常数,如M =1048576...*/3设置ζ= L,ν = a,C = L计算r = g-(f% g),产生r+g字节的随机数据并 保存在数列T中,从字节序号为r+g的位置开始,将明文添加在数列T中。/*. . . f为明文的总长度,g为分组的长度,变量ζ用于记录数列W中数据的个 数......*/4针对i用一个循环进行下列计算{/*· · ·第一层循环,(0 彡 i < f+r+g) · · · */
针对y用一个循环进行下列计算{/*···第二层循环,(0<y<L)···*/ν = (q[y]+i)*(k[y]+y) (p[y]% L)+v) % b [ (i+y) % C]y = y+1}ν = v% 256e[i] = (v"t[i]+k[i% L]) % 256/*...其中 p[i]、q[i]、k[i]、t [i]、e[i]分别表示数列 P、数列 Q、数列 K、数列Τ、数列E中的第i个数据(0彡i < f+r+g),......*/w[z] = (t[i]+w[z])% 256针对η用一个循环进行下列计算{/*···第二层循环,(1 彡η< 10)···*/如果3 == 0,指针N指向数列P/*...此时N[i]表示p[i]...*/如果3 == 1,指针N指向数列Q/*...此时N[i]表示q[i]. . . */如果3 == 2,指针N指向数列K/*...此时N[i]表示k[i]...*/ν = ((N[(i+n) % L]+n) (n+2)+(i+n)(n+3)) % Cu = (vn+(w[v])(n+1)+(i+n)(n+2)) % Cd = (u+i) % Cχ = ((w[u]+l)(n+3) + (w[d]+2)(n+5)) % 65536w[d] = (w[d]+w[u]) % 256w [u] = (w[u]"N[(i+n) % L] +d) % 256w[z] = w[z]" (x/256)N[(i+n) % L] = x% 256η = n+1}ζ = (z+1) % Mif (C ! = M-1)C = ζi = i+1}5利用密钥派生具有g个整数的数列H针对i用一个循环进行下列计算{/*· · ·第一层循环,(0 彡 i < f+r+g) · · · */对数列H中的数据按照从大到小的顺序排序,并将数列H中的字节数据在排序后 的位置序号记录到由s W],s [1],s [2],s [3],s [4],· · ·,s [i],· · ·构成的整数数列S中, 从数列E中位置序号为i的地方开始读取g个字节覆盖数列H中原有的数据,针对j用一个循环进行下列计算{/*···第二层循环,(0彡 j<g)···*/e[i] = (e[i]+s[j]) % 256i = i+1
j = j + 1
}}6将r保存在密文数列E中。可以以多种方法来实现本发明的实施例,包括写在计算机可读记录介质上的计算 机可读代码。计算机可读记录介质可以是任意类型的记录设备,在其中数据以计算机可读 形式存储。计算机可读记录介质包括、但不局限于ROM、RAM、⑶-ROM、磁带、软盘、硬盘、移动 存储盘、光数据存储、和载波(例如,通过因特网的数据传输)。计算机可读记录介质可以分 布在多个连接到网络的计算机系统上,以使得计算机可读代码能够以分布方式写到其上以 及从其上执行。另外,实现本发明的实施例所需要的功能程序、代码或代码段可以被本领域 的普通技术人员解释。尽管已经参照本发明的给定优选实施例示出并描述了本发明,但是本领域的技术 人员应当理解,在不脱离如所附权利要求所限定的本发明的精神和范围的条件下,可以在 这里进行形式和细节上的各种变化。产业上的可利用性根据本发明的加密方法可以用于加密各种数字信息和文件,并且生成的密文无有 效方法进行破解。
1权利要求
一种加密方法,其加密流程如下1初始化利用初始密钥对数列P、映射池数列W赋予初始数据2针对第i组明文进行下列计算{ ①利用数列P中的数据作非线性运算得到密钥ki,用密钥ki对第i个明文 组ti加密,以得到第i个密文组ci, ②按照某种算法,利用明文组ti或密文组ci更新映射池数列W中的数据, ③按照某种算法,计算映射参数,根据映射参数从映射池数列W中读 取被映射的数据wi, ④按照某种算法,利用数据wi对数列P进行更新。}
2.一种加密方法,其加密流程如下1初始化利用初始密钥对数列P、映射池数列W赋予初始数据2针对第i组明文进行下列计算{①利用数列P中的数据作非线性运算得到密钥ki;用密钥Iii对第i个明文 组、加密,得到第i个密文组Ci,②按照某种算法,计算映射参数,根据映射参数从映射池数列W中读 取被映射的数据Wi,③按照某种算法,利用明文组、或密文组Ci更新映射池数列W中的数据,④按照某种算法,利用数据Wi对数列P进行更新。}
3.一种加密方法,其加密流程如下1初始化利用初始密钥对数列P、映射池数列W赋予初始数据2针对第i组明文进行下列计算{①利用数列P中的数据作非线性运算得到密钥ki;用密钥ki对第i个明文 组ti加密,得到第i个密文组Ci,②按照某种算法,计算映射参数,根据映射参数从映射池数列W中读 取被映射的数据Wi,③按照某种算法,利用数据Wi对数列P进行更新,④按照某种算法,利用明文组、或密文组Ci更新映射池数列W中的数据。}
4.根据权利要求1或2或3所述加密方法,其特征是其中,“数列P”被修改为“数列 P1、数列 P2”。
5.根据权利要求1或2或3所述加密方法,其特征是其中,“数列P”被修改为“数列 戸1、数列?2、数列?3”。
6.一种加密方法,其加密流程如下1输入密钥Key,并利用密钥Key产生数列K,产生256个大于65536且mod256为255的质数数列B, /*. · ·假设密钥Key长度为L(L > 8)字节,...*/2针对i用一个循环进行下列计算 { /*· · · (0 彡 i < L) · · · */p[i] = ((k[ (i+1) % L] +i+1)((k[(i+2)%L])%L+1)*(k[ (i+2) % L] +2)((k[(i+3)%L])%L+3)*(k[(i+3) % L]+3)) % b[i] a = p[i] % Lq[i] = (k[ (i+5) % L] +1)((k[(i+8)%L])% L+i) + (k[ (i+6) % L] +2)((k[(i+9)%L]+i)% L)+ (k[(i+7) % L]+3)a% b[i+L] w[i] = (p[i]/256+L)*(q[i]/256+l+i)) % b[i+2*L] % 256 p[i] = p[i] % 256 q[i] = q[i] % 256 i = i+1/*...其中ρ [i]、q[i]、b [i]、k[i]、w[i]分别表示数列P、数列Q、数列B、 数列K、数列W中的第i个数据,其中数列P中的数据将在用作指数, 数列Q中的数据将在后面用作系数,这里是对数列P、数列Q、数列W 进行初始化,本文中用” %,,表示mod,,,“,,表示异或......*/}针对i用一个循环进行下列计算 /*...其中w[i]表示数列W中的第i个数据,M为某一常数,如M = 1048576. . . */3设置ζ = L,ν = a ,C = L计算r = g-(f % g),产生r+g字节的随机数据并保 存在数列T中,从字节序号为r+g的位置开始,将明文添加在数列T中。/*...f为明文的总长度,g为分组的长度,变量ζ用于记录数列W中数据的个数......*/4针对i用一个循环进行下列计算{/*· · ·第一层循环,(0 彡 i < f+r+g) · · · */针对y用一个循环进行下列计算 {/*...第二层循环,(0<y <L)...*/ν = (q[y]+i)*(k[y]+y) (p[y]%L)+v) % b[(i+y) % C]y = y+l}V = v% 2563表示 q[i]. . . */ 表示 k[i]. . . */e[i] = (v"t[i]+k[i% L]) % 256/*...其中P [i]、q[i]、k[i]、t [i]、e [i]分别表示数列P、数列Q、数列K、数列Τ、数列E中的第i个数据(0彡i < f+r+g),......*/w[z] = (t[i]+w[z]) % 256 针对η用一个循环进行下列计算{/*...第二层循环,(1<η<10)...*/如果3 == 0,指针N指向数列P /*...此时N[i]表示p[i]...*/ 如果3 == 1,指针N指向数列Q /*...此时N[i] 如果3 == 2,指针N指向数列K /*...此时N[i] ν = ((N[(i+n) % L]+n) (n+2) + (i+n)(n+3)) % C u = (vn+(w[v])(n+1) + (i+n)(n+2)) % C d = (u+i) % Cχ = ((w[u]+l) (n+3)+(w[d]+2)(n+5)) % 65536 w[d] = (w[d]+w[u]) % 256 w [u] = (w [u] "N [ (i+n) % L] +d) % 256 w[z] = w[z]"(x/256) N[(i+n) % L] = x% 256 η = n+1}ζ = (z+1) % M if (C ! M-1)C = ζ i = i+1}5利用密钥派生具有g个整数的数列H针对i用一个循环进行下列计算{/*· · ·第一层循环,(0 彡 i < f+r+g) · · · */对数列H中的数据按照从大到小的顺序排序,并将数列H中的字节数据在排序后的位置序号记录到由s W],s [1],s [2],s [3],s [4],· · ·,s [i],·.构成的整数数列S中,从数列E中位置序号为i的地方开始读取g个字节覆盖数列H中原有的数据,针对j用一个循环进行下列计算{e[i] = (e[i]+s[j])% 256 i = i+1 j = j+1}/*...第二层循环,(0 < j < g)}6将r保存在密文数列E中,
全文摘要
本发明涉及一种动态映射加密的方法。该加密方法的步骤如下首先利用初始密钥对数列P、映射池数列W赋予初始数据,然后针对第i组明文进行下列计算①利用数列P中的数据作非线性运算得到密钥ki,用密钥ki对第i个明文组ti加密,得到第i个密文组ci,②按照某种算法,利用明文组ti或密文组ci更新映射池数列W中的数据,③按照某种算法,计算映射参数,根据映射参数从映射池数列W中读取被映射的数据wi,④按照某种算法,利用数据wi对数列P进行更新。
文档编号H04L9/30GK101924631SQ20091014069
公开日2010年12月22日 申请日期2009年6月9日 优先权日2009年6月9日
发明者刘海云 申请人:刘海云
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1