[发明专利]一种基于SM4的认证加密算法有效
申请号: | 201710470765.5 | 申请日: | 2017-06-20 |
公开(公告)号: | CN107342865B | 公开(公告)日: | 2020-07-10 |
发明(设计)人: | 李雪松;丁红发 | 申请(专利权)人: | 贵州安融科技发展有限公司 |
主分类号: | H04L9/32 | 分类号: | H04L9/32;H04L9/08;H04L9/06 |
代理公司: | 北京细软智谷知识产权代理有限责任公司 11471 | 代理人: | 张肖 |
地址: | 550003 贵州省贵阳市贵安新区马场*** | 国省代码: | 贵州;52 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 sm4 认证 加密算法 | ||
1.一种基于SM4的认证加密算法,其特征在于,包括:
步骤S1、定义加密算法所需要的变量参数;其中,所述变量参数包括:用户密钥Key、系统参数IV、斐波那契数列模256后的32字节16进制序列const;
步骤S2、输入用户密钥Key、系统参数IV和斐波那契数列模256后的32字节16进制序列const,利用状态更新函数得到数据初始化后的状态值Su;
步骤S3、将明文P和Su输入到状态更新函数中进行v轮状态更新,得到状态值Su+v;同时,将明文P和Su利用对称密码算法SM4进行加密,得到密文C;
步骤S4、定义临时参数tmp,将临时参数tmp和Su+v输入到状态更新函数中进行7轮状态更新,得到状态值Su+v+7;
步骤S5、根据状态值Su+v+7,按预设认证码生成算法得到明文P的认证码Tag;
其中,所述步骤S2包括:
步骤S21、输入用户密钥Key、系统参数IV和斐波那契数列模256后的32字节16进制序列const,对初始状态S-10,j,j=0,1,2,3,4进行赋值;
S-10,1=const1
S-10,2=const0
其中,const0表示const的前16个字节,const1表示const的后16个字节;
步骤S22、载入用户密钥Key和系统参数IV初始化16字节的数据集mi={m2k,m2k+1,k=-5,-4,-3,...,-1};
m2k=key
步骤S23、将数据集mi和初始状态S-10,j的赋值输入到状态更新函数中进行10轮状态更新,得到10轮状态更新后的状态值S0;
步骤S24、将相关数据AD按照128bit分为u组,记为AD={ADi,i=0,1,...u-1}后,将ADi和步骤S23输出的状态值输入到状态更新函数中进行u轮状态更新,得到u轮状态更新后的状态值Su;
其中,所述步骤S23具体为:
将数据集mi和初始状态S-10,j的赋值输入状态更新函数:
Si+1,1=SM4Round(Si,0,T(Si,1))
Si+1,2=SM4Round(Si,1,T(Si,2))
Si+1,3=SM4Round(Si,2,T(Si,3))
Si+1,4=SM4Round(Si,3,T(Si,4))
其中,i=-10,-9,...,-1,其中为线性变换;经过10轮状态更新后的状态值为:
其中,所述步骤S24具体为:
将相关数据AD按照128bit分为u组,记为AD={ADi,i=0,1,...u-1};
将ADi和步骤S23输出的状态值输入到状态更新函数中进行u轮状态更新:
Si+1,1=SM4Round(Si,0,T(Si,1))
Si+1,2=SM4Round(Si,1,T(Si,2))
Si+1,3=SM4Round(Si,2,T(Si,3))
Si+1,4=SM4Round(Si,3,T(Si,4))
其中,i=0,1,2,...,u-1;经过u轮状态更新后的状态值为:
其中,所述步骤S3包括:
步骤S31、将输入的明文P按16-byte分为v组,记为P={Pm,m=0,1,...v-1},若最后一个明文分组Pv-1不足128bits,用0进行填充补齐;
步骤S32、将Pm和步骤S2输出的状态值Su输入到状态更新函数中进行v轮状态更新,得到状态值Su+v;
步骤S33、利用对称密码算法SM4加密Pm和步骤S1输出的状态值Su,得到密文C=C0||C1||...||Cv-1,Cm=SM4(Pm,Su+m),其中,Su+m作为加密密钥,Su+m根据步骤S22中的状态更新函数求解Su+m+1=StateUpdate(Su+m,Pm);
其中,所述步骤S4包括:
步骤S41、定义临时参数tmp,其中,msglen为明文P的消息长度,adlen为相关数据AD的数据长度;
步骤S42、将临时参数tmp和步骤S3输出的状态值Su+v输入到状态更新函数中进行7轮状态更新,得到状态值Su+v+7=(Su+v+7,0,Su+v+7,1,Su+v+7,2,Su+v+7,3,Su+v+7,4);
其中,所述步骤S5具体为:
计算取T的前t位作为明文P的认证码Tag,64≤t≤128。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于贵州安融科技发展有限公司,未经贵州安融科技发展有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710470765.5/1.html,转载请声明来源钻瓜专利网。