预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN110247754A(43)申请公布日2019.09.17(21)申请号201910523926.1(22)申请日2019.06.17(71)申请人中国科学院数学与系统科学研究院地址100190北京市海淀区中关村东路55号(72)发明人冯秀涛曾祥勇张凡曾光唐灯甘国华王永兴(74)专利代理机构北京君尚知识产权代理事务所(普通合伙)11200代理人司立彬(51)Int.Cl.H04L9/06(2006.01)H04L9/08(2006.01)权利要求书2页说明书5页附图1页(54)发明名称一种分组密码FBC的实现方法及装置(57)摘要本发明公开了一种分组密码FBC的实现方法及装置。本发明加密方法为:1)将明文数据分成多个明文数据组,其中每一明文数据组为n比特明文数据;2)设置主密钥k,其长度为m比特,根据主密钥k生成分组密码FBC的轮密钥;其中,m=Nn,N为自然数;设置循环左移位的比特位数s和t;设置一轮函数F以及轮数r;3)对每一明文数据组P,将其分成4个w比特的字,利用轮密钥和轮函数F按四路两重Feistel结构对明文数据组P进行r轮加密,得到密文C。本发明在保证行之间混淆程度的情况下,使得密码实现开销达到最优。CN110247754ACN110247754A权利要求书1/2页1.一种分组密码FBC的加密方法,其步骤包括:1)将明文数据分成多个明文数据组,其中每一明文数据组为n比特明文数据;2)设置主密钥k,其长度为m比特,根据主密钥k生成分组密码FBC的轮密钥;其中,m=Nn,N为自然数;设置循环左移位的比特位数s和t;设置一轮函数F以及轮数r;3)对每一明文数据组P,将其分成4个w比特的字,利用轮密钥和轮函数F按四路两重Feistel结构对明文数据组P进行r轮加密,得到密文C。2.如权利要求1所述的方法,其特征在于,步骤2)中,若m=n,生成所述轮密钥的方法为:则将主密钥k分为4个w比特的字k0,k1,k2,k3作为前4个轮密钥,i从0取到2r-5,生成后续轮密钥ki+4的方法为:211)取q为w比特全1字符块,将轮密钥ki和ki+1分别与q异或操作,并将得到的两个字再进行异或操作;212)将步骤211)最终得到的异或结果与ki+2进行按位与操作,并将得到的结果再与ki+3进行按位与操作,最后再与i进行异或操作,得到中间变量hi+4;213)将hi+4循环左移a比特、将hi+4循环左移b比特,得到两个字,将这两个字进行异或操作结果与hi+4进行异或操作,得到第i+4个轮密钥ki+4。3.如权利要求1所述的方法,其特征在于,步骤2)中,若m=2n,生成所述轮密钥的方法为:则将主密钥k分为8个32比特的字k0,k1,…,k7,i从0取到2r-9,生成后续轮密钥ki+8的方法为:221)取q为32比特全1字符块,将轮密钥ki和ki+1分别与q异或操作,并将得到的两个字再进行异或操作;222)将步骤221)最终得到的异或结果与ki+2进行按位与操作,并将得到的结果再与ki+3进行按位与操作,最后再与i进行异或操作,得到中间变量hi+8;223)将hi+8循环左移a比特、将hi+8循环左移b比特,得到两个字,将这两个字进行异或操作结果与hi+8进行异或操作,得到第i+8个轮密钥ki+8。4.如权利要求1所述的方法,其特征在于,所述轮函数F的输入为两个w比特的字、输出为一个w比特的字;所述轮函数F首先将输入的两个w比特的字进行异或得到中间变量u;然后对u进行列变换得到中间变量v,对中间变量v进行行变换得到轮函数F的输出值z。5.如权利要求4所述的方法,其特征在于,利用一个4进4出的S盒变换对u进行列变换得到中间变量v,v[j,j+w/4,j+w/2,j+3w/4]的值为S(u[j,j+w/4,j+w/2,j+3w/4]);其中,v[j,j+w/4,j+w/2,j+3w/4]代表v的第j,j+w/4,j+w/2,j+3w/4比特组成的一个4比特的字,u[j,j+w/4,j+w/2,j+3w/4]代表u的第j,j+w/4,j+w/2,j+3w/4比特组成的一个4比特的字;j取遍0,1,…,w/4-1。6.如权利要求4所述的方法,其特征在于,对v分别循环左移s比特、t比特,将得到的两个结果进行异或,再与v异或得到轮函数F的输出值z。7.如权利要求1所述的方法,其特征在于,步骤3)的具体实现方法为:31)将明文数据组P分成4个长度为w比特的字a0,b0,c0,d0,对a0,b0,c0,d0进行第i轮加密后的中间状态记为ai,bi,ci,di;32)进行r-1轮基于四路两重Feistel结构轮函数更新,得到中间状态ar-1,br-1,cr-1,dr-1;其中,每一轮