版权说明 操作指南
首页 > 成果 > 详情

一种轻量级可调分组密码实现方法、系统、电子设备以及可读存储介质

认领
导出
Link by 万方专利
反馈
分享
QQ微信 微博
成果类型:
专利
发明/设计人:
李浪;宋庆玲;杨金玲;李永超
申请/专利权人:
衡阳师范学院
专利类型:
发明专利
语种:
中文
申请时间:
2020-11-19
申请/专利号:
CN202011301394.6
公开时间:
2021-01-29
公开号:
CN112287333A
主申请人地址:
421002 湖南省衡阳市珠晖区衡花路16号衡阳师院
申请地区:
中国湖南
代理人:
姚瑶
机构署名:
本校为其他完成单位
主权项:
1.一种轻量级可调分组密码实现方法,其特征在于:包括如下步骤: 步骤1:获取明文作为待加密数据或密文作为待解密数据,并确定总轮数Nr; 步骤2:若是加密运算,则采用轻量级可调分组密码算法对所述待加密数据进行加密得到密文,其中,所述轻量级可调分组密码算法的每一轮加密过程中依据当前轮数值和/或依据所述轻量级可调分组密码算法的初始密钥中某一位的密钥值判断是否需要对调柄进行更新,若需要,则对调柄进行更新,将更新后的调柄应用到下一轮加密过程中; 若是解密运算,则采用轻量级可调分组密码算法对所述待解密数据进行解密,其中,在每一轮的解密过程存在:第1→Nr轮解密过程中的调柄与第Nr→1轮加密过程得到的调柄是一一对应。 2.根据权利要求1所述的方法,其特征在于:依据当前轮数值和/或所述某一位的密钥值判断是否更新调柄时的判断准则为:依据当前轮数值的奇偶性、所述某一位的密钥值为1或0来判断是否需要对调柄进行更新。 3.根据权利要求2所述的方法,其特征在于:当前一轮加密过程中判断是否对调柄进行更新的过程如下: 首先,判断当前轮数控制信号count是否为偶数,若是,则对当前调柄进行更新操作;否则,执行下一步骤,所述当前轮数控制信号count值与当前轮数相关; 然后,判断初始密钥中第count+N位密钥值K[count+N]是否为1,若为1,则进行调柄更新操作,否则不进行调柄更新操作,N为明文长度。 4.根据权利要求1所述的方法,其特征在于:若获取N位明文作为待加密数据X,步骤2的执行过程如下: S1:对待加密数据X进行P1置换; S2:设置轮数控制信号count的初始值Q,并将步骤S1的运算结果从高位开始以每n位为一组依次分为四个数据块X0、X1、X2、X3,以及将初始密钥K的前N位从高位开始以每n位为一组依次分为四个数据块K0、K1、K2、K3,以及将2n位调柄数据T从高位开始以每n位为一组依次分为两个数据块TL和TR,其中,N=4n,Q为非负整数; S3:对数据块Xa、Xc分别进行F1函数或F2函数运算得到数据块Xa′、Xc′,再将数据块Xb、Xa′和TL或TR进行异或运算得到数据块Xb′,以及将数据块Xd、Xc′和TR或TL进行异或运算得到数据块Xd′,所述下标a,b,c,d对应0,1,2,3或1,2,3,0; 其中,所述数据块Xa进行F1函数运算时所使用的轮密钥为数据块K0,对应所使用的调柄为数据块TL,数据块Xc进行F1函数运算时所使用的轮密钥为数据块K1,对应所使用的调柄为数据块TR;或所述数据块Xa进行F2函数运算时所使用的轮密钥为数据块K2,对应所使用的调柄为数据块TR,数据块Xc进行F2函数运算时所使用的轮密钥为数据块K3,对应所使用的调柄为数据块TL; S4:当所述a,b,c,d对应0,1,2,3时,对数据块Xa、Xb′按照Xa,Xb′高位到低位顺序进行P2置换得到数据块Xa″,Xb″,以及对数据块Xc、Xd′按照Xc,Xd′高位到低位顺序进行P2置换得到数据块Xc″,Xd″;当所述a,b,c,d对应1,2,3,0时,对数据块Xa、Xd′按照Xd′,Xa高位到低位顺序进行P2置换得到数据块Xd″,Xa″,以及对数据块Xb′、Xc按照Xb′,Xc高位到低位顺序进行P2置换得到数据块Xb″,Xc″; S5:对数据块Xb″、Xd″分别进行F2函数或F1函数运算得到数据块Xb′″、Xd′″,然后,将数据块Xc″、Xb′″和TR进行异或运算得到数据块Xc′″,以及将数据块Xa″、Xd′″和TL进行异或运算得到数据块Xa′″; 其中,所述数据块Xb″进行F2函数运算时所使用的轮密钥为数据块K2;数据块Xd″进行F2函数运算时所使用的轮密钥为数据块K3;或所述数据块Xb″进行F1函数运算时所使用的轮密钥为数据块K1,数据块Xd″进行F1函数运算时所使用的轮密钥为数据块K0;步骤S3和步骤S5所使用的函数不同; S6:依据当前轮数控制信号count和/或所述轻量级可调分组密码算法的初始密钥中某一位的密钥值判断是否需要对调柄进行更新,若需要,则对调柄进行更新,将更新后的调柄从高位开始以每n位为一组依次分为数据块TL和TR,并将数据块TL和TR作为下一轮输入的调柄数据; S7:对步骤S5运算得到的数据块Xa′″、Xc′″和步骤S4运算得到的数据块Xb″、Xd″按照Xa′″,Xb″,Xc′″,Xd″或Xd″,Xa′″,Xb″,Xc′″从高位到低位的顺序进行P1置换得到Y0,Y1,Y2,Y3,然后,判断当前轮数控制信号count是否小于轮数Nr-1+Q,若是,令count=count+1,将Y0,Y1,Y2,Y3作为新一轮输入的数据,依次赋值给X0,X1,X2,X3,再返回步骤S3;否则,将Y0,Y1,Y2,Y3作为密文从高位到低位依次输出。 5.根据权利要求4所述的方法,其特征在于:所述解密过程包括如下步骤: 步骤B1:获取N位密文作为待解密数据Y,对Y进行P1置换,并确定轮数Nr; 步骤B2:将解密过程的轮数控制信号count初始值设置为Nr-1+Q,以及将步骤B1的运算结果从高位开始以每n位为一组依次分为四个数据块Y0、Y1、Y2、Y3;以及获取初始密钥K并将其前N位从高位开始以每n位为一组依次分为四个数据块K0、K1、K2、K3,以及将当前一轮的2n位调柄数据T从高位开始以每n位为一组依次分为两个数据块TL和TR; 步骤B3:将数据块Yb、Yd分别进行F2函数或F1函数运算得到Yb′、Yd′,然后将数据块Yc、Yb′和TR进行异或运算得到Yc′,以及将数据块Ya、Yd′和TL进行异或运算得到Ya′; 其中,所述数据块Yb进行F2函数运算时所使用的轮密钥为数据块K2,Yd进行F2函数运算时所使用的轮密钥为数据块K3;或所述数据块Yb进行F1函数运算时所使用的轮密钥为数据块K1,数据块Yd进行F1函数运算时所使用的轮密钥为数据块K0; 且每一轮加密过程得到的调柄以相反使用顺序作为解密过程中对应一轮的调柄; 步骤B4:当所述a,b,c,d对应0,1,2,3时,对数据块Yb、Ya′按照Ya′,Yb高位到低位顺序进行P2置换得到数据块Ya″,Yb″,以及对数据块Yd、Yc′按照Yc′,Yd高位到低位顺序进行P2置换得到数据块Yc″,Yd″;当所述a,b,c,d对应1,2,3,0时,对数据块Yd、Ya′按照Yd,Ya′高位到低位顺序进行P2置换得到数据块Yd″,Ya″,以及对数据块Yb、Yc′按照Yb,Yc′高位到低位顺序进行P2置换得到数据块Yb″,Yc″; 步骤B5:将数据块Ya″、Yc″分别进行F1函数或F2函数运算得到Ya′″、Yc′″,然后将数据块Yb″、Ya′″和TL或TR进行异或运算得到数据块Yb′″,以及将数据块Yd″、Yc′″和TR或TL进行异或运算得到数据块Yd′″; 其中,所述数据块Ya″进行F1函数运算时所使用的轮密钥为数据块K0,对应所使用的调柄为数据块TL,数据块Yc″进行F1函数运算时所使用的轮密钥为数据块K1,对应所使用的调柄为数据块TR;或所述数据块Ya″进行F2函数运算时所使用的轮密钥为数据块K2,对应所使用的调柄为数据块TR,数据块Yc″进行F2函数运算时所使用的轮密钥为数据块K3,对应所使用的调柄为数据块TL,步骤B3和步骤B5所使用的函数不同; 步骤B6:对步骤B5运算得到的结果Yb′″、Yd′″和步骤B4运算得到的Ya″、Yc″按照Ya″,Yb′″,Yc″,Yd′″或Yd′″,Ya″,Yb′″,Yc″从高位到低位的顺序进行P1置换得到X0,X1,X2,X3,然后判断当前轮数控制信号count是否大于轮数0,若是,令count=count-1,将X0,X1,X2,X3作为新一轮输入的数据,依次赋值给Y0,Y1,Y2,Y3,返回步骤B3;否则将X0,X1,X2,X3作为明文从高位到低位依次输出。 6.根据权利要求1所述的方法,其特征在于:若所述明文长度为64,则每个数据块的长度为16;初始密钥的长度为64+Nr。 7.根据权利要求1所述的方法,其特征在于:调柄更新操作过程如下: 步骤A1:将输入的2n位调柄数据T以每n/16为一个单元从高位到低位顺序依次表示为{t[0],t[1],t[2]…t[31]},对其进行P1置换得到置换后的数据T': T'=P1{t[0],t[1],t[2],t[3]……t[30],t[31]} 步骤A2:将步骤A1得到的2n位数据T'以每32位为一单元从高位到低位顺序依次进行操作,32位数据以每半字节为一个单元从高位到低位进行分组,依次表示为T'0,T'1,T'2,T'3,T'4,T'5,T'6,T'7,每半字节数据从高位到低位依次表示为t3,t2,t1,t0,对下标为0、1、4、6的调柄T'i分别进行如下的更新变换,得到更新后的32位调柄数据T″0,T″1,T'2,T'3,T″4,T'5,T″6,T'7,并将其作为下一轮的调柄输入数据,更新变换公式如下: 8.一种基于权利要求1-7任一项所述方法的系统,其特征在于:包括:获取模块和加解密模块; 其中,所述获取模块用于获取明文作为待加密数据或密文作为待解密数据,并确定总轮数Nr; 若是加密运算,所述加解密模块用于采用轻量级可调分组密码算法对所述待加密数据进行加密得到密文,其中,所述轻量级可调分组密码算法的每一轮加密过程中依据当前轮数值和/或所述轻量级可调分组密码算法的初始密钥中某一位的密钥值判断是否需要对调柄进行更新,若需要,则对调柄进行更新,将更新后的调柄应用到下一轮加密过程中; 若为解密运算,所述加解密模块用于采用轻量级可调分组密码算法对所述待解密数据进行解密,其中,在每一轮的解密过程存在:第1→Nr轮解密过程中的调柄与第Nr→1轮加密过程得到的调柄是一一对应。 9.一种电子设备,其特征在于:包括处理器和存储器,所述存储器存储了计算机程序,处理器调用所述计算机程序以执行权利要求1-7任一项所述方法的步骤。 10.一种可读存储介质,其特征在于:存储了计算机程序,所述计算机程序被处理器调用以执行权利要求1-7任一项所述方法的步骤。
摘要:
本发明公开了一种轻量级可调分组密码实现方法、系统、电子设备以及可读存储介质,该方法包含:获取明文作为待加密数据或密文作为待解密数据,并确定总轮数Nr;若是加密运算,采用轻量级可调分组密码算法对待加密数据进行加密得到密文,每一轮加密过程中依据当前轮数值和/或初始密钥中某一位的密钥值判断是否需要对调柄进行更新,并将更新后的调柄应用到下一轮加密过程中;若是解密运算,采用轻量级可调分组密码算法对待解密数据进行解密,在每一轮的解密过程存在:第1→Nr轮解密过程中的调柄与第Nr→1轮加密过程得到的调柄是一一对应。本发明的调柄数据通过更换调柄达到更换密钥的效果,公开的...

反馈

验证码:
看不清楚,换一个
确定
取消

成果认领

标题:
用户 作者 通讯作者
请选择
请选择
确定
取消

提示

该栏目需要登录且有访问权限才可以访问

如果您有访问权限,请直接 登录访问

如果您没有访问权限,请联系管理员申请开通

管理员联系邮箱:yun@hnwdkj.com