一种SM2运算方法、系统、设备及计算机存储介质
技术领域
本申请涉及信息安全技术领域,更具体地说,涉及一种SM2运算方法、系统、设备及计算机存储介质。
背景技术
SM2是中国国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,其包括数字签名算法、密钥交换协议和公钥加密算法。与RSA算法相比,SM2算法具有所需存储空间小、数据传输所用带宽要求低、硬件实现所需逻辑电路的逻辑门数少、功耗低的优点,所以SM2算法被应用在多种场景,比如被应用在低功耗要求的移动通信设备、无线通信设备、智能卡等中。
在SM2算法的应用过程中,需要对数据进行运算,比如乘法运算、除法运算等,现有的一种SM2的实现方法是:采用Montgomery乘法或Montgoment约化算法来实现SM2算法中的乘法运算或约化运算。
然而,现有的SM2运算方法中,一次Montgomery乘法算法需要执行2n(n+1)次单精度乘法运算,一次Montgomery约化算法需执行n(n+1)次单精度乘法运算,运算次数多,运算速率慢,使得SM2算法的运算速率较慢。
综上所述,如何提高SM2运算方法的加解密速率是目前本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种SM2运算方法,其能在一定程度上解决如何提高SM2运算方法的加解密速率的技术问题。本申请还提供了一种SM2运算系统、设备及计算机可读存储介质。
为了实现上述目的,本申请提供如下技术方案:
一种SM2运算方法,包括:
获取待运算数据;
将所述待运算数据转换为n位b进制的整数数据;
对所述整数数据进行迭代和移位运算,得到中间运算结果;
判断所述中间运算结果是否大于等于预置参数,若是,则将所述中间运算结果与所述预置参数的差值作为所述待运算数据的目标运算结果,若否,则将所述中间运算结果作为所述待运算数据的目标运算结果;
基于所述目标运算结果及所述SM2算法对所述待运算数据进行运算。
优选的,所述将所述待运算数据转换为n位b进制的整数数据,包括:
将所述待运算数据中的第一数据和第二数据对应转换为n位b进制的第一整数和第二整数;
所述对所述整数数据进行迭代和移位运算,得到中间运算结果,包括:
通过第一运算公式对所述第一整数和所述第二整数进行迭代和移位运算,得到所述中间运算结果;
其中,所述第一运算公式包括:
u=(ai-1,0+xiy0)mod b,Ai=(Ai-1+xiY+2256u-2224u-296u+264u-u)/b;
其中,i从初值0开始以1为单位渐变至n-1;A-1=(a-1,n,a-1,n-1,…,a-1,1,a-1,0)b=0;ai-1,0表示Ai-1中的值a0;bn=2256,1≤j≤6;xi∈X,X=(xn-1,…,x1,x0)b表示所述第一整数;y0∈Y,Y=(yn-1,…,y1,y0)b表示所述第二整数;P=2256-2224-296+264-1,且P表示所述预置参数;An-1表示所述中间运算结果。
优选的,所述通过第一运算公式对所述第一整数和所述第二整数进行迭代和移位运算,得到所述中间运算结果,包括:
通过第二运算公式对所述第一整数和所述第二整数进行迭代和移位运算,得到所述中间运算结果;
所述第二运算公式包括:
u=(ai-1,0+xiy0)mod b、Ai=(Ai-1+xiY+S-T)>>N;
其中,S和T表示按照第一预设规则,基于u和b确定的中间参数;N表示基于b确定的进制数;>>表示右移运算。
优选的,所述将所述待运算数据转换为n位b进制的整数数据,包括:
将所述待运算数据中的第三数据转换为n位b进制的第三整数;
所述对所述整数数据进行迭代和移位运算,得到中间运算结果,包括:
通过第三运算公式对所述第三整数进行迭代和移位运算,得到所述中间运算结果;
其中,所述第三运算公式包括:
v=di-1.i,Di=Di-1+(2256v-2224v-296v+264v-v)bi,D=Dn-1>>256;
其中,i从初值0开始以1为单位渐变至n-1;D-1=(d-1,2n-1,…,d-1,1,d-1,0)b=T,di-1,i表示Di-1中的值di;T=(t2n-1,…,t1,t0)b表示所述第三整数;>>表示右移运算;D表示所述中间运算结果。
优选的,所述通过第三运算公式对所述第三整数进行迭代和移位运算,得到所述中间运算结果,包括:
通过第三运算子公式对所述第三整数进行迭代和移位运算,得到所述中间运算结果;
所述第三运算子公式包括:
v=di-1,i,Di=Di-1+((E-F)<<M),D=Dn-1>>256;
其中,E和F表示按照第二预设规则,基于v和b确定的中间参数;M表示基于b确定的进制数;<<表示左移运算。
优选的,所述通过第三运算子公式对所述第三整数进行迭代和移位运算,得到所述中间运算结果,包括:
通过第四运算子公式对所述第三整数进行迭代和移位运算,得到所述中间运算结果;
所述第四运算子公式包括:
v=di-1,i、Di=Di-1+((E-F)<<32i),D=Dn-1>>256;
其中,E=(v,0,0,0,0,0,v,0,0)b;F=(0,v,0,0,0,v,0,0,v)b;<<表示左移运算。
优选的,所述通过第三运算子公式对所述第三整数进行迭代和移位运算,得到所述中间运算结果,包括:
通过第五运算子公式对所述第三整数进行迭代和移位运算,得到所述中间运算结果;
所述第五运算子公式包括:
v=di-1,i、Di=Di-1+((E-F)<<64i),D=Dn-1>>256;
其中,E=(v,0,0,v,0)b;F=(vH,vL,vH,vL,v)b;vH=v>>32;vL=v<<32;<<表示左移运算。
一种SM2运算系统,包括:
第一获取模块,用于获取待运算数据;
第一转换模块,用于将所述待运算数据转换为n位b进制的整数数据;
第一运算模块,用于对所述整数数据进行迭代和移位运算,得到中间运算结果;
第一判断模块,用于判断所述中间运算结果是否大于等于预置参数,若是,则将所述中间运算结果与所述预置参数的差值作为所述待运算数据的目标运算结果,若否,则将所述中间运算结果作为所述待运算数据的目标运算结果;
第二运算模块,用于基于所述目标运算结果及所述SM2算法对所述待运算数据进行运算。
一种SM2运算设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上任一所述SM2运算方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述SM2运算方法的步骤。
本申请提供的一种SM2运算方法,获取待运算数据;将待运算数据转换为n位b进制的整数数据;对整数数据进行迭代和移位运算,得到中间运算结果;判断中间运算结果是否大于等于预置参数,若是,则将中间运算结果与预置参数的差值作为待运算数据的目标运算结果,若否,则将中间运算结果作为待运算数据的目标运算结果;基于目标运算结果及SM2算法对待运算数据进行运算。本申请提供的一种SM2运算方法中,对整数数据进行迭代和移位运算,降低了单精度乘法运算次数,运算速率快,提高了SM2运算方法的加解密运算速率。本申请提供的一种SM2运算系统、设备及计算机可读存储介质也解决了相应技术问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种SM2运算方法的第一流程图;
图2为本申请实施例提供的一种SM2运算方法的第二流程图;
图3为本申请实施例提供的一种SM2运算方法的第三流程图;
图4为本申请实施例提供的一种SM2运算系统的结构示意图;
图5为本申请实施例提供的一种SM2运算设备的结构示意图;
图6为本申请实施例提供的一种SM2运算设备的另一结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
SM2是中国国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,其包括数字签名算法、密钥交换协议和公钥加密算法。与RSA算法相比,SM2算法具有所需存储空间小、数据传输所用带宽要求低、硬件实现所需逻辑电路的逻辑门数少、功耗低的优点,所以SM2算法被应用在多种场景,比如被应用在低功耗要求的移动通信设备、无线通信设备、智能卡等中。在SM2算法的应用过程中,需要对数据进行运算,比如乘法运算、除法运算等,现有的一种SM2运算的方法是:采用Montgomery乘法来实现SM2算法中的乘法运算,其过程可以包括以下步骤:将相乘的两个数据分别表示成n位b进制整数X=(xn-1,…,x1,x0)b、Y=(yn-1,…,y1,y0)b;并设置P=(pn-1,…,p1,p0)b,且满足条件0≤X,Y<P、gcd(P,b)=1;记A-1=(an,an-1,…,a1,a0)b=0;令i=0,通过公式u=((a0+xiy0)p′)mod b、Ai=(Ai-1+xiY+uP)/b计算Ai的值,判断i的值是否小于n-1,若是,则将i的值加1,返回执行通过公式u=((a0+xiy0)p′)mod b、Ai=(Ai-1+xiY+uP)/b计算Ai的值的步骤,若否,则比较An-1是否大于等于P,若An-1大于等于P,则将An-1-P作为相乘的两个数据的乘法运算结果,若An-1小于P,则将An-1作为相乘的两个数据的乘法运算结果;基于乘法运算结果对待处理数据进行加解密运算。然而,现有的SM2运算方法中,一次Montgomery乘法算法需要执行2n(n+1)次单精度乘法运算,运算次数多,运算速率慢,使得SM2算法的运算速率较慢。而本申请提供的SM2运算方法可以提高SM2的运算速率。
请参阅图1,图1为本申请实施例提供的一种SM2运算方法的第一流程图。
本申请实施例提供的一种SM2运算方法,可以包括以下步骤:
步骤S11:获取待运算数据。
实际应用中,待运算数据指的是SM2运算方法中进行乘法运算或者除法运算时的数据,其可以为进行乘法运算时相乘的第一数据和第二数据,也可以为进行除法运算时的被除数等,其类型可以根据实际需要确定。
步骤S12:将待运算数据转换为n位b进制的整数数据。
实际应用中,在获取待运算数据后,便可以将待运算数据转换为n位b进制的整数数据,以便采用Montgomery算法对待运算数据进行运算。
步骤S13:对整数数据进行迭代和移位运算,得到中间运算结果。
实际应用中,本申请并不是完全采用Montgomery乘法对整数数据进行运算,而是采用Montgomery乘法时对整数数据进行迭代和移位运算,得到相应的中间运算结果,也即通过对整数数据进行迭代和移位运算来减少对整数数据进行单精度乘法运算次数,提高运算效率。
步骤S14:判断中间运算结果是否大于等于预置参数,若是,则执行步骤S15,若否,则执行步骤S16。
步骤S15:将中间运算结果与预置参数的差值作为待运算数据的目标运算结果。
步骤S16:将中间运算结果作为待运算数据的目标运算结果。
步骤S17:基于目标运算结果及SM2算法对待运算数据进行运算。
实际应用中,预置参数可以为SM2标准推荐参数P;不难理解,待运算数据为相乘的第一数据和第二数据时,目标运算结果便为待运算数据的乘法运算结果;待运算数据为作为被除数的第三数据时,目标运算结果便为1与待运算数据的除法运算结果。应当指出,在基于目标运算结果及SM2算法对待运算数据进行运算时,可以进行加解密运算、签名运算、验签运算、密钥协商运算、密钥对生成运算、公钥验证等。
本申请提供的一种SM2运算方法,获取待运算数据;将待运算数据转换为n位b进制的整数数据;对整数数据进行迭代和移位运算,得到中间运算结果;判断中间运算结果是否大于等于预置参数,若是,则将中间运算结果与预置参数的差值作为待运算数据的目标运算结果,若否,则将中间运算结果作为待运算数据的目标运算结果;基于目标运算结果及SM2算法对待运算数据进行运算。本申请提供的一种SM2运算方法中,对整数数据进行迭代和移位运算,降低了单精度乘法运算次数,运算速率快,提高了SM2运算方法的运算速率。
请参阅图2,图2为本申请实施例提供的一种SM2运算方法的第二流程图。
本申请实施例提供的一种SM2运算方法,可以包括以下步骤:
步骤S101:获取第一数据和第二数据。
由后续描述可知,第一数据和第二数据为待相乘的两个数据,所以实际应用中,在基于SM2算法对待处理数据进行运算运算的过程中,当需要进行乘法运算时,便可以将相乘的两个数据作为第一数据和第二数据,比如在将椭圆曲线上的点G和私钥相乘时,便可以将点G和私钥分别作为第一数据和第二数据。不难理解,当待处理数据为待加密数据时,便基于SM2算法对待加密数据进行加密运算;当待处理数据为待解密数据时,便基于SM2算法对待解密数据进行解密运算。
步骤S102:将第一数据和第二数据对应转换为n位b进制的第一整数和第二整数。
实际应用中,在获取第一数据和第二数据后,便可以将第一数据和第二数据对应转换为n位b进制的第一整数和第二整数,这里的对应指的是将第一数据转换为第一整数,将第二数据转换为第二整数。
步骤S103:通过第一运算公式对第一整数和第二整数进行运算,得到第一运算结果。
实际应用中,在将第一数据和第二数据对应转换为第一整数和第二整数后,便可以通过第一运算公式对第一整数和第二整数进行运算,得到第一运算结果。
具体应用场景中,第一运算公式可以为:
u=(ai-1,0+xiy0)mod b,Ai=(Ai-1+xiY+2256u-2224u-296u+264u-u)/b;其中,i从初值0开始以1为单位渐变至n-1;A-1=(a-1,n,a-1,n-1,…,a-1,1,a-1,0)b=0;ai-1,0表示Ai-1中的值a0;bn=2256,1≤j≤6;xi∈X,X=(xn-1,…,x1,x0)b表示第一整数;y0∈Y,Y=(yn-1,…,y1,y0)b表示第二整数;P表示预置参数,并且P的值可以为:P=2256-2224-296+264-1;An-1表示第一运算结果。也即在使用第一运算公式的过程中,先令i=0,通过第一运算公式u=(ai-1,0+xiy0)mod b,Ai=(Ai-1+xiY+2256u-2224u-296u+264u-u)/b对第一整数和第二整数计算得到Ai,之后判断判断i的值是否小于n-1,若是,则将i的值加1,返回执行通过公式u=(ai-1,0+xiy0)mod b,Ai=(Ai-1+xiY+2256u-2224u-296u+264u-u)/b对第一整数和第二整数计算得到Ai的步骤,直至得到An-1。
具体的,通过第一运算公式对第一整数和第二整数进行迭代和移位运算,得到中间运算结果时,可以通过第二运算公式对第一整数和第二整数进行迭代和移位运算,得到中间运算结果;第二运算公式可以包括:
u=(ai-1,0+xiy0)mod b、Ai=(Ai-1+xiY+S-T)>>N;
其中,S和T表示按照第一预设规则,基于u和b确定的中间参数;N表示基于b确定的进制数;>>表示右移运算。
具体的,当b=232,n=8时,可以按照将除法运算变为移位运算的原则进一步对步骤S103进行优化,以进一步降低步骤S103的计算复杂度,提高SM2算法的运算速率,则通过第二运算公式对第一整数和第二整数进行运算,得到第一运算结果的过程可以具体为:通过第一运算子公式对第一整数和第二整数进行运算,得到第一运算结果;
第一运算子公式包括:
u=(ai-1,0+xiy0)mod b、Ai=(Ai-1+xiY+S-T)>>32;
其中,S=(u,0,0,0,0,0,u,0,0)b;T=(0,u,0,0,0,u,0,0,u)b;>>表示右移运算。
具体的,当b=264,n=4时,可以按照将除法运算变为移位运算的原则进一步对步骤S103进行优化,以进一步降低步骤S103的计算复杂度,提高SM2算法的运算速率,则通过第一运算公式对第一整数和第二整数进行运算,得到第一运算结果的过程可以具体为:通过第二运算子公式对第一整数和第二整数进行运算,得到第一运算结果;
第二运算子公式包括:
u=(ai-1,0+xiy0)mod b、Ai=(Ai-1+xiY+S-T)>>64;
其中,S=(u,0,0,u,0)b;T=(uH,uL,uH,uL,u)b;uH=u>>32;uL=u<<32;>>表示右移运算;<<表示左移运算。
步骤S104:判断第一运算结果是否大于等于P,若是,则执行步骤S105,若否,则执行步骤S106。
步骤S105:将第一运算结果与P的差值作为第一数据和第二数据的乘法运算结果。
步骤S106:将第一运算结果作为第一数据和第二数据的乘法运算结果。
实际应用中,在对第一整数和第二整数进行运算得到第一运算结果之后,便可以通过比较第一运算结果和P的值的大小来确定第一数据和第二数据的乘法运算结果。
步骤S107:基于乘法运算结果及SM2算法对待处理数据进行运算。
实际应用中,在确定出第一数据和第二数据的乘法运算结果之后,便可以基于乘法运算结果及SM2算法对待处理数据进行运算。
本申请提供的一种SM2运算方法,获取第一数据和第二数据;将第一数据和第二数据对应转换为n位b进制的第一整数和第二整数;通过第一运算公式对第一整数和第二整数进行运算,得到第一运算结果;判断第一运算结果是否大于等于P,若是,则将第一运算结果与P的差值作为第一数据和第二数据的乘法运算结果,若否,则将第一运算结果作为第一数据和第二数据的乘法运算结果;基于乘法运算结果及SM2算法对待处理数据进行运算;其中,第一运算公式包括:u=(ai-1,0+xiy0)mod b,Ai=(Ai-1+xiY+2256u-2224u-296u+264u-u)/b;其中,i从初值0开始以1为单位渐变至n-1;A-1=(an,an-1,…,a1,a0)b=0;ai-1,0表示Ai-1中的值a0;bn=2256,1≤j≤6;xi∈X,X=(xn-1,…,x1,x0)b表示第一整数;y0∈Y,Y=(yn-1,…,y1,y0)b表示第二整数;P=2256-2224-296+264-1;An-1表示第一运算结果。本申请提供的一种SM2运算方法中,在第一运算公式中只需执行n(n+1)次单精度乘法运算,运算次数少,运算速率快,提高了SM2运算方法的运算速率。
请参阅图3,图3为本申请实施例提供的一种SM2运算方法的第三流程图。
实际应用中,本申请实施例提供的一种SM2运算方法可以包括如下步骤:
步骤S201:获取第一数据和第二数据。
步骤S202:将第一数据和第二数据对应转换为n位b进制的第一整数和第二整数。
步骤S203:通过第一运算公式对第一整数和第二整数进行运算,得到第一运算结果。
步骤S204:判断第一运算结果是否大于等于P,若是,则执行步骤S205,若否,则执行步骤S206。
步骤S205:将第一运算结果与P的差值作为第一数据和第二数据的乘法运算结果。
步骤S206:将第一运算结果作为第一数据和第二数据的乘法运算结果。
步骤S207:获取第三数据。
不难理解,第三数据指的是SM2运算方法中执行除法运算时的被除数,所以实际应用中,当需要进行除法运算时,可以将被除数作为第三数据。
步骤S208:将第三数据转换为n位b进制的第三整数。
实际应用中,在获取第三数据后,便可以将第三数据转换为n位b进制的第三整数。
步骤S209:通过第三运算公式对第三整数进行运算,得到第二运算结果。
实际应用中,在将第三数据转换为第三整数之后,便可以通过第三运算公式对第三整数进行运算,得到第二运算结果。
具体应用场景中,第三运算公式可以为:v=di-1,i,Di=Di-1+(2256v-2224v-296v+264v-v)bi,D=Dn-1>>256;其中,i从初值0开始以1为单位渐变至n-1;D-1=(d-1,2n-1,…,d-1,1,d-1,0)b=T,di-1,i表示Di-1中的值di;T=(t2n-1,…,t1,t0)b表示第三整数;>>表示右移运算;bn=2256,1≤j≤6;D表示第二运算结果。也即在使用第二运算公式的过程中,先令i=0,通过公式v=di-1,i,Di=Di-1+(2256v-2224v-296v+264v-v)bi对第三整数计算得到Di,之后判断判断i的值是否小于n-1,若是,则将i的值加1,返回执行通过公式v=di-1,i,Di=Di-1+(2256v-2224v-296v+264v-v)bi对第三整数计算得到Di的步骤,直至得到Dn-1,并且计算D=Dn-1>>256。
具体的,可以按照将除法运算变为移位运算的原则进一步对步骤S209进行优化,以进一步降低步骤S209的计算复杂度,提高SM2算法的运算速率,则步骤S209通过第二运算公式对第三整数进行运算,得到第二运算结果的过程可以具体为:通过第三运算子公式对第三整数进行运算,得到第二运算结果;第三运算子公式包括:v=di-1,i,Di=Di-1+((E-F)<<M),D=Dn-1>>256;其中,E和F表示按照第二预设规则,基于v和b确定的中间参数;M表示基于b确定的进制数;<<表示左移运算。
具体的,当b=232,n=8时,通过第三运算子公式对第三整数进行运算,得到第二运算结果的过程可以具体为:通过第四运算子公式对第三整数进行运算,得到第二运算结果;第四运算子公式包括:v=di-1,i、Di=Di-1+((E-F)<<32i),D=Dn-1>>256;其中,E=(v,0,0,0,0,0,v,0,0)b;F=(0,v,0,0,0,v,0,0,v)b;<<表示左移运算。
具体的,当b=264,n=4时,通过第三运算子公式对第三整数进行运算,得到第二运算结果的过程可以具体为:通过第五运算子公式对第三整数进行运算,得到第二运算结果;第五运算子公式包括:v=di-1,i、Di=Di-1+((E-F)<<64i),D=Dn-1>>256;其中,E=(v,0,0,v,0)b;F=(vH,vL,vH,vL,v)b;vH=v>>32;vL=v<<32;<<表示左移运算。此过程中D的变化情况请参阅表1、表2、表3、表4、表5和表6。
表1 D-1的数据信息表
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
d<sub>7</sub> |
d<sub>6</sub> |
d<sub>5</sub> |
d<sub>4</sub> |
d<sub>3</sub> |
d<sub>2</sub> |
d<sub>1</sub> |
d<sub>0</sub> |
表2 D0的数据信息表
表3 D1的数据信息表
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
d<sub>7</sub> |
d<sub>6</sub> |
d<sub>5</sub> |
d<sub>4</sub> |
d<sub>3</sub> |
d<sub>2</sub> |
d<sub>1</sub> |
0 |
+ |
|
|
d<sub>1</sub> |
|
|
d<sub>1</sub> |
|
|
- |
|
|
d<sub>1</sub>>>32 |
d<sub>1</sub><<32 |
d<sub>1</sub>>>32 |
d<sub>1</sub><<32 |
d<sub>1</sub> |
|
= |
d<sub>7</sub> |
d<sub>6</sub> |
d<sub>5</sub> |
d<sub>4</sub> |
d<sub>3</sub> |
d<sub>2</sub> |
0 |
0 |
表4 D2的数据信息表
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
d<sub>7</sub> |
d<sub>6</sub> |
d<sub>5</sub> |
d<sub>4</sub> |
d<sub>3</sub> |
d<sub>2</sub> |
0 |
0 |
+ |
|
d<sub>2</sub> |
|
|
d<sub>2</sub> |
|
|
|
- |
|
d<sub>2</sub>>>32 |
d<sub>2</sub><<32 |
d<sub>2</sub>>>32 |
d<sub>2</sub><<32 |
d<sub>2</sub> |
|
|
= |
d<sub>7</sub> |
d<sub>6</sub> |
d<sub>5</sub> |
d<sub>4</sub> |
d<sub>3</sub> |
0 |
0 |
0 |
表5 D3的数据信息表
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
d<sub>7</sub> |
d<sub>6</sub> |
d<sub>5</sub> |
d<sub>4</sub> |
d<sub>3</sub> |
0 |
0 |
0 |
+ |
d<sub>3</sub> |
|
|
d<sub>3</sub> |
|
|
|
|
- |
d<sub>3</sub>>>32 |
d<sub>3</sub><<32 |
d<sub>3</sub>>>32 |
d<sub>3</sub><<32 |
d<sub>3</sub> |
|
|
|
= |
d<sub>7</sub> |
d<sub>6</sub> |
d<sub>5</sub> |
d<sub>4</sub> |
0 |
0 |
0 |
0 |
表6 D的数据信息表
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
0 |
0 |
0 |
d<sub>7</sub> |
d<sub>6</sub> |
d<sub>5</sub> |
d<sub>4</sub> |
步骤S210:判断第二运算结果是否大于等于P,若是,则执行步骤S211,若否,则执行步骤S212。
步骤S211:将第二运算结果与P的差值作为1除以第三数据的除法运算结果。
步骤S212:将第二运算结果作为1除以第三数据的除法运算结果。
步骤S213:基于乘法运算结果、除法运算结果及SM2算法对待处理数据进行运算。
本申请提供的SM2算法运算方法中,对第三数据进行除法运算时,不需要进行单精度乘法运算;而现有的蒙哥马利约化算法对第三数据进行除法运算时,需要进行n(n+1)次单精度乘法运算,由此可见,本申请提供的SM2算法运算方法可以进一步降低执行除法时的单精度乘法运算次数,进一步提高SM2运算方法的运算速率。
请参阅图4,图4为本申请实施例提供的一种SM2运算系统的结构示意图。
本申请实施例提供的一种SM2运算系统,可以包括:
第一获取模块101,用于获取待运算数据;
第一转换模块102,用于将待运算数据转换为n位b进制的整数数据;
第一运算模块103,用于对整数数据进行迭代和移位运算,得到中间运算结果;
第一判断模块104,用于判断中间运算结果是否大于等于预置参数,若是,则将中间运算结果与预置参数的差值作为待运算数据的目标运算结果,若否,则将中间运算结果作为待运算数据的目标运算结果;
第二运算模块105,用于基于目标运算结果及SM2算法对待运算数据进行运算。
本申请实施例提供的一种SM2运算系统中,第一转换模块可以包括:
第一转换单元,用于将待运算数据中的第一数据和第二数据对应转换为n位b进制的第一整数和第二整数;
第一运算模块可以包括:
第一运算子模块,用于通过第一运算公式对第一整数和第二整数进行迭代和移位运算,得到中间运算结果;
其中,第一运算公式包括:
u=(ai-1,0+xiy0)mod b,Ai=(Ai-1+xiY+2256u-2224u-296u+264u-u)/b;
其中,i从初值0开始以1为单位渐变至n-1;A-1=(a-1,n,a-1,n-1,…,a-1,1,a-1,0)b=0;ai-1,0表示Ai-1中的值a0;bn=2256,1≤j≤6;xi∈X,X=(xn-1,…,x1,x0)b表示第一整数;y0∈Y,Y=(yn-1,…,y1,y0)b表示第二整数;P=2256-2224-296+264-1,且P表示预置参数;An-1表示中间运算结果。
本申请实施例提供的一种SM2运算系统中,第一运算子模块可以包括:
第二运算子模块,用于通过第二运算公式对第一整数和第二整数进行迭代和移位运算,得到中间运算结果;
第二运算公式包括:
u=(ai-1,0+xiy0)mod b、Ai=(Ai-1+xiY+S-T)>>N;
其中,S和T表示按照第一预设规则,基于u和b确定的中间参数;N表示基于b确定的进制数;>>表示右移运算。
本申请实施例提供的一种SM2运算系统中,第二运算子模块可以包括:
第一运算单元,用于通过第一运算子公式对第一整数和第二整数进行迭代和移位运算,得到中间运算结果;
第一运算子公式包括:
u=(ai-1,0+xiy0)mod b、Ai=(Ai-1+xiY+S-T)>>32;
其中,S=(u,0,0,0,0,0,u,0,0)b;T=(0,u,0,0,0,u,0,0,u)b;>>表示右移运算。
本申请实施例提供的一种SM2运算系统中,第二运算子模块可以包括:
第二运算单元,用于通过第二运算子公式对第一整数和第二整数进行迭代和移位运算,得到中间运算结果;
第二运算子公式包括:
u=(ai-1,0+xiy0)mod b、Ai=(Ai-1+xiY+S-T)>>64;
其中,S=(u,0,0,u,0)b;T=(uH,uL,uH,uL,u)b;uH=u>>32;uL=u<<32;>>表示右移运算;<<表示左移运算。
本申请实施例提供的一种SM2运算系统中,第一转换模块可以包括:
第二转换单元,用于将待运算数据中的第三数据转换为n位b进制的第三整数;
第一运算模块可以包括:
第三运算子模块,用于通过第三运算公式对第三整数进行迭代和移位运算,得到中间运算结果;
其中,第三运算公式包括:
v=di-1,i,Di=Di-1+(2256v-2224v-296v+264v-v)bi,D=Dn-1>>256;
其中,i从初值0开始以1为单位渐变至n-1;D-1=(d-1,2n-1,…,d-1,1,d-1,0)b=T,di-1,i表示Di-1中的值di;T=(t2n-1,…,t1,,t0)b表示第三整数;>>表示右移运算;D表示中间运算结果。
本申请实施例提供的一种SM2运算系统中,第三运算子模块可以包括:
第四运算子模块,用于通过第三运算子公式对第三整数进行迭代和移位运算,得到中间运算结果;
第三运算子公式包括:
v=di-1,i,Di=Di-1+((E-F)<<M),D=Dn-1>>256;
其中,E和F表示按照第二预设规则,基于v和b确定的中间参数;M表示基于b确定的进制数;<<表示左移运算。
本申请实施例提供的一种SM2运算系统中,第四运算子模块可以包括:
第三运算单元,用于通过第四运算子公式对第三整数进行迭代和移位运算,得到中间运算结果;
第四运算子公式包括:
v=di-1,i、Di=Di-1+((E-F)<<32i),D=Dn-1>>256;
其中,E=(v,0,0,0,0,0,v,0,0)b;F=(0,v,0,0,0,v,0,0,v)b;<<表示左移运算。
本申请实施例提供的一种SM2运算系统中,第四运算子模块可以包括:
第四运算单元,用于通过第五运算子公式对第三整数进行迭代和移位运算,得到中间运算结果;
第五运算子公式包括:
v=di-1,i、Di=Di-1+((E-F)<<64i),D=Dn-1>>256;
其中,E=(v,0,0,v,0)b;F=(vH,vL,vH,vL,v)b;vH=v>>32;vL=v<<32;<<表示左移运算。
本申请还提供了一种SM2运算设备及计算机可读存储介质,其均具有本申请实施例提供的一种SM2运算方法具有的对应效果。请参阅图5,图5为本申请实施例提供的一种SM2运算设备的结构示意图。
本申请实施例提供的一种SM2运算设备,可以包括:
存储器201,用于存储计算机程序;
处理器202,用于执行计算机程序时实现如上任一实施例所描述的SM2运算方法的步骤。
请参阅图6,本申请实施例提供的另一种SM2运算设备中还可以包括:与处理器202连接的输入端口203,用于传输外界输入的命令至处理器202;与处理器202连接的显示单元204,用于显示处理器202的处理结果至外界;与处理器202连接的通信模块205,用于实现SM2运算设备与外界的通信。显示单元204可以为显示面板、激光扫描使显示器等;通信模块205所采用的通信方式包括但不局限于移动高清链接技术(HML)、通用串行总线(USB)、高清多媒体接口(HDMI)、无线连接:无线保真技术(WiFi)、蓝牙通信技术、低功耗蓝牙通信技术、基于IEEE802.11s的通信技术。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如上任一实施例所描述的SM2运算方法的步骤。
本申请所涉及的计算机可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
本申请实施例提供的一种SM2运算系统、设备及计算机可读存储介质中相关部分的说明请参见本申请实施例提供的一种SM2运算方法中对应部分的详细说明,在此不再赘述。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。