[发明专利]动态映射加密的方法无效
申请号: | 200910140694.8 | 申请日: | 2009-06-09 |
公开(公告)号: | CN101924631A | 公开(公告)日: | 2010-12-22 |
发明(设计)人: | 刘海云 | 申请(专利权)人: | 刘海云 |
主分类号: | H04L9/30 | 分类号: | H04L9/30;H04L9/32 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 524099 广东省湛江市赤*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 动态 映射 加密 方法 | ||
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,用密钥ki对第i个明文
组ti加密,得到第i个密文组ci,
②按照某种算法,计算映射参数,根据映射参数从映射池数列W中读
取被映射的数据wi,
③按照某种算法,利用明文组ti或密文组ci更新映射池数列W中的数据,
④按照某种算法,利用数据wi对数列P进行更新。
}
3.一种加密方法,其加密流程如下:
【1】初始化:利用初始密钥对数列P、映射池数列W赋予初始数据
【2】针对第i组明文进行下列计算:
{
①利用数列P中的数据作非线性运算得到密钥ki,用密钥ki对第i个明文
组ti加密,得到第i个密文组ci,
②按照某种算法,计算映射参数,根据映射参数从映射池数列W中读
取被映射的数据wi,
③按照某种算法,利用数据wi对数列P进行更新,
④按照某种算法,利用明文组ti或密文组ci更新映射池数列W中的数据。
}
4.根据权利要求1或2或3所述加密方法,其特征是:其中,“数列P”被修改为:“数列P1、数列P2”。
5.根据权利要求1或2或3所述加密方法,其特征是:其中,“数列P”被修改为:“数列P1、数列P2、数列P3”。
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]%L
q[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+1+i))%b[i+2*L]%256
p[i]=p[i]%256
q[i]=q[i]%256
i=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-3]*(w[i-5]+2)w[i-2]+(w[i-4]+1)w[i-1]+w[i-3])%
(b[i%256])%256
i=i+1
}
/*...其中w[i]表示数列W中的第i个数据,M为某一常数,如:M=
1048576...*/
【3】设置z=L,v=a ,C=L计算:r=g-(f%g),产生r+g字节的随机数据并保存在数列T中,从字节序号为r+g的位置开始,将明文添加在数列T中。
/*...f为明文的总长度,g为分组的长度,变量z用于记录数列W中数据的个数......*/
【4】针对i用一个循环进行下列计算:
{ /*...第一层循环,(0≤i<f+r+g)...*/
针对y用一个循环进行下列计算:
{ /*...第二层循环,(0≤y<L)...*/
v=(q[y]+i)*(k[y]+y)(p[y]%L)+v)%b[(i+y)%C]
y=y+1
}
v=v%256
e[i]=(v^t[i]+k[i%L])%256
/*...其中p[i]、q[i]、k[i]、t[i]、e[i]分别表示数列P、数列Q、数列K、
数列T、数列E中的第i个数据(0≤i<f+r+g),......*/
w[z]=(t[i]+w[z])%256
针对n用一个循环进行下列计算:
{ /*...第二层循环,(1≤n<10)...*/
如果n%3==0,指针N指向数列P /*...此时N[i]表示p[i]...*/
如果n%3==1,指针N指向数列Q /*...此时N[i]表示q[i]...*/
如果n%3==2,指针N指向数列K /*...此时N[i]表示k[i]...*/
v=((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
x=((w[u]+1)(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=n+1
}
z=(z+1)%M
if(C!M-1)C=z
i=i+1
}
【5】利用密钥派生具有g个整数的数列H
针对i用一个循环进行下列计算:
{ /*...第一层循环,(0≤i<f+r+g)...*/
对数列H中的数据按照从大到小的顺序排序,并将数列H中的字节数据
在排序后的位置序号记录到由s[0],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])%256
i=i+1
j=j+1
}
}
【6】将r保存在密文数列E中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于刘海云,未经刘海云许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910140694.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:柔性手机
- 下一篇:多形式自然能源的民用综合利用供电系统