一种基于国密算法的公钥还原方法技术

技术编号:39491780 阅读:8 留言:0更新日期:2023-11-24 11:14
本申请公开了一种基于国密算法的公钥还原方法

【技术实现步骤摘要】
一种基于国密算法的公钥还原方法、设备及介质


[0001]本申请涉及数据处理
,尤其涉及一种基于国密算法的公钥还原方法

设备及介质


技术介绍

[0002]国密算法包括
SM1、SM2、SM3、SM4
等多个密码标准

目前,国密算法逐渐被广泛应用,逐渐成为了一个重要的技术和商业竞争力

[0003]其中,
SM2
是中国自主开发的椭圆曲线公钥密码算法,相比于
RSA
等传统非对称加密算法,
SM2
算法使用更短的密钥长度,提供更高的加密安全性

同时,
SM2
算法在国家加密标准的审定

保密技术等方面也更具可靠性,被广泛应用于数字证书

电子签名

加密通信等领域

[0004]在
SM2
数字签名和加密算法中,公钥是一个非常重要的参数,它承载了身份认证和安全加密的核心功能

通常情况下,
SM2
公钥是由私钥生成的,私钥的安全性是保护公钥安全的关键

然而,在一些特殊情况下,如私钥丢失或泄露

公钥被篡改等情况下,需要通过其他手段还原
SM2
公钥,以延续数字签名和加密的使用,因此,亟需一种高效准确的基于国密算法的公钥还原的技术方案


技术实现思路

[0005]本申请实施例提供一种基于国密算法的公钥还原方法

设备及介质,用于解决亟需一种高效准确的基于国密算法的公钥还原的技术方案的问题

[0006]本申请实施例采用下述技术方案:
[0007]一方面,本申请实施例提供了一种基于国密算法的公钥还原方法,该方法包括:根据椭圆曲线和随机数生成一对公私钥;根据
SM3
哈希函数与公钥,对数据明文进行哈希计算,得到第一哈希值;通过
SM2
签名算法,根据私钥对所述第一哈希值进行加密,生成所述数据明文的电子签名;将所述第一哈希值追加至所述电子签名的末尾,得到签名文件;对所述签名文件进行公钥还原,得到还原公钥与第二哈希值;所述第二哈希值通过对所述签名文件进行拆分得到;根据所述
SM3
哈希函数与所述还原公钥,对所述数据明文进行哈希计算,得到还原第一哈希值;将所述第二哈希值与所述还原第一哈希值进行对比;若相同,则确定公钥还原成功

[0008]一个示例中,所述对所述签名文件进行公钥还原,得到还原公钥与第二哈希值,具体包括:将所述签名文件进行拆分,得到第一电子签名参数值

第二电子签名参数值

第二哈希值;对所述椭圆曲线进行初始化,得到椭圆曲线初始化参数值;根据所述
SM2
签名算法,计算所述椭圆曲线上一个大整数点的
x
轴坐标值;判断所述大整数点的
x
轴坐标值是否小于所述椭圆曲线的素数;若是,则计算所述椭圆曲线上无穷远点的阶与所述大整数点的
x
轴坐标值之间的乘积结果;判断所述乘积结果是否等于无穷远点值;若是,根据所述大整数点的
x
轴坐标值与所述第一电子签名参数值的循环判断次数,计算大整数点的
y
轴坐标值;计算
所述第一电子签名参数值与所述第二电子签名参数值之和的模值;计算所述模值与所述椭圆曲线初始化参数值的逆元值;根据所述逆元值对所述大整数点的坐标进行标量乘法运算,得到椭圆曲线更新点;取所述第二电子签名参数值的相反数,根据所述相反数对所述椭圆曲线初始化参数值进行取模,得到取模值;将所述取模值乘以逆元值,得到乘积结果,根据所述乘积结果对所述椭圆曲线初始化参数值进行取模,得到重新取模值;通过标量乘法函数与所述重新取模值对所述椭圆曲线初始化参数值进行运算,得到运算点;将所述更新点与所述运算点进行相加,得到还原公钥点

[0009]一个示例中,所述根据所述
SM2
签名算法,计算所述椭圆曲线上一个大整数点的
x
轴坐标值,具体包括:计算公式如下:其中,
R
x
为大整数点的
x
轴坐标值,
inter
为第一电子签名参数值的循环判断次数,
r
为第一电子签名参数值,
e1为第二哈希值,
n
为椭圆曲线上无穷远点的阶

[0010]一个示例中,所述根据所述大整数点的
x
轴坐标值与所述第一电子签名参数值的循环判断次数,计算大整数点的
y
轴坐标值,具体包括:通过预设公式,计算大整数点的初始
y
轴坐标值;判断所述初始
y
轴坐标值的奇偶性;若为偶数时,则将所述初始
y
轴坐标值确定为所述大整数点的
y
轴坐标值;若为奇数时,则判断循环判断次数的奇偶性与所述初始
y
轴坐标值的奇偶性是否一致;若一致,则将所述初始
y
轴坐标值确定为所述大整数点的
y
轴坐标值;若不一致,则计算所述椭圆曲线的素数与所述大整数点的初始
y
轴坐标值之间的差值,将所述差值作为所述大整数点的
y
轴坐标值

[0011]一个示例中,所述通过预设公式,计算大整数点的初始
y
轴坐标值,具体包括:计算公式如下:其中,
R
y
:
为所述大整数点的
y
轴坐标值,
R
x
为所述大整数点的
x
轴坐标值,
B
为椭圆曲线的常数

[0012]一个示例中,所述根据
SM3
哈希函数与公钥,对数据明文进行哈希计算,得到第一哈希值,具体包括:将所述数据明文与哈希参数进行拼接,得到拼接字符串;所述哈希参数包括私钥

所述公钥

用户
ID
;对所述拼接字符串进行
SM3
哈希计算,得到第三哈希值;将所述用户
ID
转换为字节数组,并记录所述字节数组的长度;所述字节数组包括多个字节;对所述用户
ID
的长度与所述字节数组进行
SM3
哈希计算,生成第四哈希值;将椭圆曲线参数

所述公钥的直角系坐标值

所述第四哈希值,拼接至所述第三哈希值,得到拼接第三哈希值;所述椭圆曲线参数包括椭圆曲线模质数的系数

椭圆曲线基点的直角系坐标值;对所述拼接第三哈希值进行哈希,得到所述第一哈希值

[0013]一个示例中,所述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于国密算法的公钥还原方法,其特征在于,所述方法包括:根据椭圆曲线和随机数生成一对公私钥;根据
SM3
哈希函数与公钥,对数据明文进行哈希计算,得到第一哈希值;通过
SM2
签名算法,根据私钥对所述第一哈希值进行加密,生成所述数据明文的电子签名;将所述第一哈希值追加至所述电子签名的末尾,得到签名文件;对所述签名文件进行公钥还原,得到还原公钥与第二哈希值;所述第二哈希值通过对所述签名文件进行拆分得到;根据所述
SM3
哈希函数与所述还原公钥,对所述数据明文进行哈希计算,得到还原第一哈希值;将所述第二哈希值与所述还原第一哈希值进行对比;若相同,则确定公钥还原成功
。2.
根据权利要求1所述的方法,其特征在于,所述对所述签名文件进行公钥还原,得到还原公钥与第二哈希值,具体包括:将所述签名文件进行拆分,得到第一电子签名参数值

第二电子签名参数值

第二哈希值;对所述椭圆曲线进行初始化,得到椭圆曲线初始化参数值;根据所述
SM2
签名算法,计算所述椭圆曲线上一个大整数点的
x
轴坐标值;判断所述大整数点的
x
轴坐标值是否小于所述椭圆曲线的素数;若是,则计算所述椭圆曲线上无穷远点的阶与所述大整数点的
x
轴坐标值之间的乘积结果;判断所述乘积结果是否等于无穷远点值;若是,根据所述大整数点的
x
轴坐标值与所述第一电子签名参数值的循环判断次数,计算大整数点的
y
轴坐标值;计算所述第一电子签名参数值与所述第二电子签名参数值之和的模值;计算所述模值与所述椭圆曲线初始化参数值的逆元值;根据所述逆元值对所述大整数点的坐标进行标量乘法运算,得到椭圆曲线更新点;取所述第二电子签名参数值的相反数,根据所述相反数对所述椭圆曲线初始化参数值进行取模,得到取模值;将所述取模值乘以逆元值,得到乘积结果,根据所述乘积结果对所述椭圆曲线初始化参数值进行取模,得到重新取模值;通过标量乘法函数与所述重新取模值对所述椭圆曲线初始化参数值进行运算,得到运算点;将所述更新点与所述运算点进行相加,得到还原公钥点
。3.
根据权利要求2所述的方法,其特征在于,所述根据所述
SM2
签名算法,计算所述椭圆曲线上一个大整数点的
x
轴坐标值,具体包括:计算公式如下:
其中,
R
x
为大整数点的
x
轴坐标值,
inter
为第一电子签名参数值的循环判断次数,
r
为第一电子签名参数值,
e1为第二哈希值,
n
为椭圆曲线上无穷远点的阶
。4.
根据权利要求2所述的方法,其特征在于,所述根据所述大整数点的
x
轴坐标值与所述第一电子签名参数值的循环判断次数,计算大整数点的
y
轴坐标值,具体包括:通过预设公式,计算大整数点的初始
y
轴坐标值;判断所述初始
y
轴坐标值的奇偶性;若为偶数时,则将所述初始
y
轴坐标值确定为所述大整数点的
y
轴坐标值;若为奇数时,则判断循环判断次数的奇偶性与所述初始
y
轴坐标值的奇偶性是否一致;若一致,则将所述初始
y
轴坐标值确定为所述大整数点的
y
轴坐标值;若不一致,则计算所述椭圆曲线的素数与所述大整数点的初始
y
轴坐标值之间的差值,将所述差值作为所述大整数点的
y
轴坐标值
。5.
根据权利要求4所述的方法,其特征在于,所述通过预设公式,计算大整数点的初始
y
轴坐标值,具体包括:计算公式如下:其中,
R
y
为所述大整数点的
y
轴坐标值,
R
x
为所述大整数点的
x
轴坐标值,
B
为椭圆曲线的常数
。6.
根据权利要求1所述的方法,其特征在于,所述根据
SM3
哈希函数与公钥,对数据明文进行哈希计算,得到第一哈希值,具体包括:将所述数据...

【专利技术属性】
技术研发人员:马国朋肖雪商广勇李程马振
申请(专利权)人:浪潮山东质量链科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1