首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于国产商用密码算法的快速保留数据格式加密计算方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:王伟忠

摘要:本发明公开了一种基于国产商用密码算法的快速保留数据格式加密计算方法,包括:将用户输入的Tweak作为HMAC的计算因子,通过HMAC‑SM3的计算方法,按照后续循环所需要的密钥长度,提前计算出衍生密钥S,修改原有循环进行加密的处理流程,将上述衍生的密钥S进行分段进行异或操作,从而节省计算步骤,在保障算法结果、算法安全的情况下,能够实现国产商用密码替换及性能的提升。本发明通过国产商用密码算法的替换,在实现数据保留格式加密及保障算法安全的同时,通过衍生密钥算法,减少过程加密环节,进而能够有效的提升算法效率,实现快速计算。

主权项:1.一种基于国产商用密码算法的快速保留数据格式加密计算方法,其特征在于,包括:加密流程:1明确radix、密钥K、IV向量T以及输入明文整数数组X;2分别获取X和T的元素大小,分别为n和t;3将n整除2,并通过LI函数获取小于等于此数的最大整数u,并计算v=n-u;4将X进行数组分割,A数组为X数组第1个元素到第u个元素;B数组为第u+1个元素到第n个元素;5按照b=HIHIv*logradix8的计算流程获取整数b;6按照d=4*HIb4+4的计算流程得到整数d;7组成字节数组P,P的组合规则符合P=[1]1||[2]1||[1]1||[radix]3||[10]1||[umod256]1||[n]4||[t]4||T;8通过GetArr功能模块获取衍生出的字节信息S,其中GetArr中的密钥为K,种子数据为7中的P,计划获取的字节长度为d*10;9令i从0开始,逐次累加1,进行10次循环计算,每一次计算都遵循以下流程:1从8中的S中获取本次计算的数据St,St=MIDS,i*d,d;2将St通过NUM256转换为一个整数y;3识别当前循环次数i是否为偶数,若为偶数则m=u;反之m=v;4计算c=NUMradixA+ymodradixm;5通过C=STRmradixc得到长度为m的整数数组C;6将数组B赋值给A,将数组C赋值给B,同时递增i值;7根据i值确认是否完成10次循环计算;若未完成则转到1进行下一次计算;若已完成则将此时的数组A、数组B进行联合,输出最终的加密后的结果R;解密流程:1明确radix、密钥K、IV向量T以及密文整数数组R;2分别获取R和T的元素大小,分别为n和t;3将n整除2,并通过LI函数获取小于等于此数的最大整数u,并计算v=n-u;4将R进行数组分割,A数组为R数组第1个元素到第u个元素;B数组为第u+1个元素到第n个元素;5按照b=HIHIv*logradix8的计算流程获取整数b;6按照d=4*HIb4+4的计算流程得到整数d;7组成字节数组P,P的组合规则符合P=[1]1||[2]1||[1]1||[radix]3||[10]1||[umod256]1||[n]4||[t]4||T;8通过GetArr功能模块获取衍生出的字节信息S,其中GetArr中的密钥为K,种子数据为7中的P,计划获取的字节长度为d*10;9令i从9开始,逐次累减1,进行10次循环计算,每一次计算都遵循以下流程:1从8中的S中获取本次计算的数据St,St=MIDS,i*d,d;2将St通过NUM256转换为一个整数y;3识别当前循环次数i是否为偶数,若为偶数则m=u;反之m=v;4计算c=NUMradixB-ymodradixm;5通过C=STRmradixc得到长度为m的整数数组C;6将数组A赋值给B,将数组C赋值给A,同时递减i值;7根据i值确认是否完成10次循环计算;若未完成则转到1进行下一次计算;若已完成则将此时的数组A、数组B进行联合,输出最终的解密后的结果X;radix为在区间[2,65535]内的一个正整数;X为输入明文整数数组,内部每个元素a均满足0≤a<radix,其数组长度区间为[2,4096];LENx,即数组x的元素个数;K为密钥数据,为字节数字,长度为16字节;T为密钥IV向量信息,长度为16字节;t为T的字节数,即t=LENT;n为输入明文整数数组X的元素个数,即n=LENX;LIx为最大取整函数,即获取≤x的最大整数;HIx为最小取整函数,即获取≥x的最小整数;u,v为过程数据,均为正整数;A,B为过程数据,均为整数数组;P为过程数据,为字节数组;[i..j]为数组截取,即代表从数组i到j位置的所有元素,包括i和j||为字节连接功能,即把相关的两个字节进行相连;[x]n为通过n个字节来表示数字x;mod即为整除求余运算;GetArrk,s,l为密钥衍生算法,k为密钥,s为种子数据,l为计划获取的字节长度,GetArrk,s,l为密钥衍生算法遵循以下规则:GetArrk,s,l=HMAC-SM3k,s0||HMAC-SM3k,s1||HMAC-SM3k,s2||……其中s0=HMAC-SM3ssi=HMAC-SM3k,si-1;通过上述算法即可获得长度为l的字节信息,其中HMAC-SM3能替换成CMAC-SM4算法;MIDarray,startpos,length为从字节数组array中startpos位置获取length长度的字节;NUMradixarray的计算遵循以下规则:1.令x=0;2.针对array中每个元素a,按照排列顺序从小到大循环计算;x=x*radix+a;3.返回得到的整数x;通过STRmradixx计算长度为m的一个整数数组Arr,遵循以下规则:1.判断x是否满足0≤x<radixm;2.从1开始到m递增,这个数组每个元素通过以下方式计算,即Arr[i-1]=xmodradixx=LIxradix;R为保留格式计算后的输出数组,也作为解密时的输入数组。

全文数据:

权利要求:

百度查询: 王伟忠 一种基于国产商用密码算法的快速保留数据格式加密计算方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。