CN111865616B - 基于ecdsa算法生成密钥对的方法及装置 - Google Patents
基于ecdsa算法生成密钥对的方法及装置 Download PDFInfo
- Publication number
- CN111865616B CN111865616B CN202010761776.0A CN202010761776A CN111865616B CN 111865616 B CN111865616 B CN 111865616B CN 202010761776 A CN202010761776 A CN 202010761776A CN 111865616 B CN111865616 B CN 111865616B
- Authority
- CN
- China
- Prior art keywords
- key
- public key
- private key
- target
- generating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 150000003839 salts Chemical class 0.000 claims abstract description 12
- 238000012795 verification Methods 0.000 claims description 49
- 238000004590 computer program Methods 0.000 claims description 12
- 230000002708 enhancing effect Effects 0.000 claims description 10
- 238000005516 engineering process Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000011161 development Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3252—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于ECDSA算法生成密钥对的方法及装置。该发明包括:基于ECDSA算法生成密钥对生成器;通过预设随机数和椭圆曲线空间对象对密钥对生成器进行初始化操作,其中,预设随机数是根据密钥对生成器的盐值设置的随机数的种子对应的随机数,椭圆曲线空间对象是根据secp256k1算法生成的椭圆曲线空间对象;通过初始化过的密钥对生成器生成密钥对;依据密钥对,生成目标公钥和目标私钥。通过本发明,解决了相关技术中各运行平台的密钥对不能通用的问题。
Description
技术领域
本发明涉及通信技术领域,具体而言,涉及一种基于ECDSA算法生成密钥对的方法及装置。
背景技术
相关技术中,Java平台中基本上都是通过EC产生的密钥对,私钥需要通过PKCS8EncodedKeySpec来进行处理,公钥需要通过X509EncodedKeySpec来进行处理,但是,通过这种方式产生的秘钥对不能跨平台使用,也就是说在Java平台产生的密钥对以及数字签名,在其他平台(如python等)都是不能使用的。
同时,现在Java、python等各种平台的应用非常之多,经常需要平台间进行数据交互,在每个平台中产生的数据在其他平台中仍然可以使用,现在各平台采用的标准不同,相互之间不同通用,密钥对以及数字签名在各平台应用中使用就比较困难,开发成本会比较高。
针对相关技术中存在的上述问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种基于ECDSA算法生成密钥对的方法及装置,以解决相关技术中各运行平台的密钥对不能通用的问题。
为了实现上述目的,根据本发明的一个方面,提供了一种基于ECDSA算法生成密钥对的方法。该发明包括:基于ECDSA算法生成密钥对生成器;通过预设随机数和椭圆曲线空间对象对所述密钥对生成器进行初始化操作,其中,所述预设随机数是根据所述密钥对生成器的盐值设置的随机数的种子对应的随机数,所述椭圆曲线空间对象是根据secp256k1算法生成的椭圆曲线空间对象;通过初始化过的所述密钥对生成器生成密钥对;依据所述密钥对,生成目标公钥和目标私钥。
进一步地,依据所述密钥对,生成目标公钥包括:创建公钥字符串流对象,并依据所述公钥字符串流对象生成目标公钥对象,其中,所述目标公钥对象是增强安全的私人函件编码流对应的公钥对象;从所述密钥对中获取公钥字节数据信息;将所述公钥字节数据信息写入所述目标公钥对象中;关闭所述目标公钥对象并输出公钥字符串信息;将所述公钥字符串信息输入至密钥对数组中和/或者,将所述公钥字符串信息保存至密钥文件中以生成所述目标公钥。
进一步地,依据所述密钥对,生成目标私钥包括:创建私钥字符串流对象,并依据所述私钥字符串流对象生成目标私钥对象,其中,所述目标私钥对象是增强安全的私人函件编码流对应的私钥对象;从所述密钥对中获取私钥字节数据信息;将所述私钥字节数据信息写入所述目标私钥对象中;关闭所述目标私钥对象并输出私钥字符串信息;将所述私钥字符串信息输入至密钥对数组中和/或者,将所述私钥字符串信息保存至密钥文件中以生成所述目标私钥。
进一步地,在依据所述密钥对,生成目标公钥和目标私钥之后,所述方法还包括:基于所述目标私钥对原文内容进行数字签名。
进一步地,在基于所述目标私钥对原文内容进行数字签名,包括:获取原文内容;依据私钥字节数据信息,创建第一字节输入流对象;依据所述第一字节输入流对象,创建私钥读取缓冲区对象;依据所述私钥读取缓冲区对象获取私钥装载对象;依据所述私钥装载对象,获取私钥Key对象;依据私钥Key对象,生成数字签名对象;通过所述数字签名对象对所述原文内容进行椭圆曲线数字签名,并输出第一预设格式的签名密文。
进一步地,在基于所述目标私钥对原文内容进行数字签名之后,所述方法还包括:基于所述目标公钥对所述签名密文进行验证。
进一步地,基于所述目标公钥对所述签名密文进行验证,包括:对所述第一预设格式的签名密文进行解码,获得第二预设格式的所述签名密文;从所述密钥对中获取私钥字节数据信息,并根据公钥字节数据信息创建第二字节输入流对象;根据所述字节输入流对象创建公钥读取缓冲区对象;依据所述公钥读取缓冲区对象,获取公钥Key对象;依据所述公钥Key对象、SHA256算法和椭圆曲线数字签名算法,生成数字签名验证对象;依据所述数字签名验证对象对所述第二预设格式的所述签名密文进行签名验证;如果验证结果为真,则所述签名密文通过所述签名验证;如果所述验证结果为假,则所述签名密文未通过所述签名验证。
为了实现上述目的,根据本发明的另一方面,提供了一种基于ECDSA算法生成密钥对的装置。该装置包括:第一生成单元,用于基于ECDSA算法生成密钥对生成器;初始化单元,用于通过预设随机数和椭圆曲线空间对象对所述密钥对生成器进行初始化操作,其中,所述预设随机数是根据所述密钥对生成器的盐值设置的随机数的种子对应的随机数,所述椭圆曲线空间对象是根据secp256k1算法生成的椭圆曲线空间对象;第二生成单元,用于通过初始化过的所述密钥对生成器生成密钥对;第三生成单元,用于依据所述密钥对,生成目标公钥和目标私钥。
为了实现上述目的,根据本发明的另一方面,提供了一种“计算机可读存储介质”或“非易失性存储介质”,其中,所述“计算机可读存储介质”或“非易失性存储介质”包括存储的程序,其中,在所述程序运行时控制所述“计算机可读存储介质”或“非易失性存储介质”所在设备执行上述所述一种基于ECDSA算法生成密钥对的方法。
为了实现上述目的,根据本发明的另一方面,提供了一种处理器,其中,所述处理器用于运行程序,其中,所述程序运行时执行上述所述一种基于ECDSA算法生成密钥对的方法。
通过本发明,采用以下步骤:基于ECDSA算法生成密钥对生成器;通过预设随机数和椭圆曲线空间对象对所述密钥对生成器进行初始化操作,其中,所述预设随机数是根据所述密钥对生成器的盐值设置的随机数的种子对应的随机数,所述椭圆曲线空间对象是根据secp256k1算法生成的椭圆曲线空间对象;通过初始化过的所述密钥对生成器生成密钥对;依据所述密钥对,生成目标公钥和目标私钥,解决了相关技术中各运行平台的密钥对不能通用的问题,进而达到了提高开发效率的技术效果。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例提供的一种基于ECDSA算法生成密钥对的方法的流程图;以及
图2是根据本发明实施例提供的一种基于ECDSA算法生成密钥对的装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于描述,以下对本发明实施例涉及的部分名词或术语进行说明:
ECDSA:ECDSA,Elliptic Curve Digital Signature Algorithm,椭圆曲线数字签名算法,是使用椭圆曲线密码(ECC,Elliptic curve cryptography)对数字签名算法(DSA,Digital Signature Algorithm)的模拟,ECDSA是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC。
secp256k1:是指比特币中使用的ECDSA曲线的参数。
根据本发明的实施例,提供了一种基于ECDSA算法生成密钥对的方法。
图1是根据本发明实施例提供的一种基于ECDSA算法生成密钥对的方法的流程图。如图1所示,该发明包括以下步骤:
步骤S101,基于ECDSA算法生成密钥对生成器;
步骤S102,通过预设随机数和椭圆曲线空间对象对密钥对生成器进行初始化操作,其中,预设随机数是根据密钥对生成器的盐值设置的随机数的种子对应的随机数,椭圆曲线空间对象是根据secp256k1算法生成的椭圆曲线空间对象;
步骤S103,通过初始化过的密钥对生成器生成密钥对;
步骤S104,依据密钥对,生成目标公钥和目标私钥。
上述地,在本申请的实施例中提供了一种通过椭圆曲线数字签名算法生成密钥对,通过椭圆曲线空间对象对密钥对生成器,以初始化的密钥对生成器生成包括私钥和公钥的密钥对。
本发明实施例提供的一种基于ECDSA算法生成密钥对的方法,通过基于ECDSA算法生成密钥对生成器;通过预设随机数和椭圆曲线空间对象对所述密钥对生成器进行初始化操作,其中,所述预设随机数是根据所述密钥对生成器的盐值设置的随机数的种子对应的随机数,所述椭圆曲线空间对象是根据secp256k1算法生成的椭圆曲线空间对象;通过初始化过的所述密钥对生成器生成密钥对;依据所述密钥对,生成目标公钥和目标私钥,解决了相关技术中各运行平台的密钥对不能通用的问题,进而达到了提高开发效率的技术效果。
可选地,依据所述密钥对,生成目标公钥包括:创建公钥字符串流对象,并依据所述公钥字符串流对象生成目标公钥对象,其中,所述目标公钥对象是增强安全的私人函件编码流对应的公钥对象;从所述密钥对中获取公钥字节数据信息;将所述公钥字节数据信息写入所述目标公钥对象中;关闭所述目标公钥对象并输出公钥字符串信息;将所述公钥字符串信息输入至密钥对数组中和/或者,将所述公钥字符串信息保存至密钥文件中以生成所述目标公钥。
上述地,通过密钥对生成器生成ECDSA密钥对包括生成目标公钥包括创建公钥字符串流对象,并根据公钥字符串流对象产生PEM编码流的的公钥对象,其中,PEM为PrivacyEnhanced Mail,是增强安全的私人函件,接着从密钥对中获取公钥字节数据信息,再把公钥字节数据信息写入PEM编码流的公钥对象后,关闭编码流的公钥对象,并输出公钥字符串信息,将输出的公钥字符串信息输出到密钥对数组中或者保存到密钥文件中即可生成目标公钥。
可选地,依据所述密钥对,生成目标私钥包括:创建私钥字符串流对象,并依据所述私钥字符串流对象生成目标私钥对象,其中,所述目标私钥对象是增强安全的私人函件编码流对应的私钥对象;从所述密钥对中获取私钥字节数据信息;将所述私钥字节数据信息写入所述目标私钥对象中;关闭所述目标私钥对象并输出私钥字符串信息;将所述私钥字符串信息输入至密钥对数组中和/或者,将所述私钥字符串信息保存至密钥文件中以生成所述目标私钥。
具体地,通过密钥对生成器生成ECDSA密钥对包括生成目标私钥包括创建私钥字符串流对象,根据私钥字符串流对象产生PEM编码流的私钥对象,再通过密钥对获取私钥字节数据信息,把私钥字节数据信息写入PEM编码流的私钥对象后,关闭编码流的私钥对象,并输出私钥字符串信息,再将私钥字符串信息输出值密钥对数组中或者保存至密钥文件中即生成目标私钥。
通过上述步骤采用通用的标准和编码的算法生成的目标公钥和目标私钥,解决了各平台中算法库标准不统一的问题,从而打通了各平台间数据标准和编码统一的问题,这样可以极大的方面了跨平台间应用的交互,提供开发效率,降低研发成本。
可选地,在依据所述密钥对,生成目标公钥和目标私钥之后,所述方法还包括:基于所述目标私钥对原文内容进行数字签名。
可选地,在基于所述目标私钥对原文内容进行数字签名,包括:获取原文内容;依据私钥字节数据信息,创建第一字节输入流对象;依据所述第一字节输入流对象,创建私钥读取缓冲区对象;依据所述私钥读取缓冲区对象获取私钥装载对象;依据所述私钥装载对象,获取私钥Key对象;依据私钥Key对象,生成数字签名对象;通过所述数字签名对象对所述原文内容进行椭圆曲线数字签名,并输出第一预设格式的签名密文。
具体地,基于ECDSA目标私钥进行数字签名包括以下步骤:
1、根据私钥字节数据信息创建字节输入流对象;
2、根据字节输入流对象创建私钥读取缓冲区对象;
3、根据私钥读取缓冲区获取PEM私有秘钥装载对象,并获取私钥Key对象;
4、根据私钥Key对象对信息生成数字签名对象;
5、设置待进行数字签名的数据内容字节数组信息;
6、通过数字签名对象对原文内容进行ECDSA数字签名;
7、输出base64格式的签名密文内容,其中,第一预设格式为base64格式。
可选地,在基于所述目标私钥对原文内容进行数字签名之后,所述方法还包括:基于所述目标公钥对所述签名密文进行验证。
可选地,基于所述目标公钥对所述签名密文进行验证,包括:对所述第一预设格式的签名密文进行解码,获得第二预设格式的所述签名密文;从所述密钥对中获取私钥字节数据信息,并根据公钥字节数据信息创建第二字节输入流对象;根据所述字节输入流对象创建公钥读取缓冲区对象;依据所述公钥读取缓冲区对象,获取公钥Key对象;依据所述公钥Key对象、SHA256算法和椭圆曲线数字签名算法,生成数字签名验证对象;依据所述数字签名验证对象对所述第二预设格式的所述签名密文进行签名验证;如果验证结果为真,则所述签名密文通过所述签名验证;如果所述验证结果为假,则所述签名密文未通过所述签名验证。
具体地,在目标私钥进行数字签名后,需要基于ECDSA公钥进行签名数字验证,具体包括以下步骤:
1、获取原文数据内容字节数组信息;
2、对base64格式的签名密文内容进行解码;
3、根据公钥字节数据信息创建字节输入流对象;
4、根据字节输入流对象创建公钥读取缓冲区对象;
5、根据公钥读取缓冲区获取PEM公钥装载对象,并获取公钥Key对象;
6、基于SHA256withECDSA生成签名数字验证对象;
7、根据步骤1、5输出的数据初始化签名数字验证对象;
8、根据步骤2和7验证签名;
9、如果步骤8返回真,表明验证通过;返回假,表明验证失败。
通过本申请实施例提供的一种基于ECDSA算法生成密钥对的方法中,通过采用通用的标准和编码的算法,解决了各平台中算法库标准不统一的问题,从而打通了各平台间数据标准和编码统一的问题。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例还提供了一种基于ECDSA算法生成密钥对的装置,需要说明的是,本发明实施例的一种基于ECDSA算法生成密钥对的装置可以用于执行本发明实施例所提供的用于一种基于ECDSA算法生成密钥对的方法。以下对本发明实施例提供的一种基于ECDSA算法生成密钥对的装置进行介绍。
图2是根据本发明实施例提供的一种基于ECDSA算法生成密钥对的装置的示意图。如图2所示,该装置包括:第一生成单元201,用于基于ECDSA算法生成密钥对生成器;初始化单元202,用于通过预设随机数和椭圆曲线空间对象对所述密钥对生成器进行初始化操作,其中,所述预设随机数是根据所述密钥对生成器的盐值设置的随机数的种子对应的随机数,所述椭圆曲线空间对象是根据secp256k1算法生成的椭圆曲线空间对象;第二生成单元203,用于通过初始化过的所述密钥对生成器生成密钥对;第三生成单元204,用于依据所述密钥对,生成目标公钥和目标私钥。
本发明实施例提供的一种基于ECDSA算法生成密钥对的装置,通过第一生成单元201,用于基于ECDSA算法生成密钥对生成器;初始化单元202,用于通过预设随机数和椭圆曲线空间对象对所述密钥对生成器进行初始化操作,其中,所述预设随机数是根据所述密钥对生成器的盐值设置的随机数的种子对应的随机数,所述椭圆曲线空间对象是根据secp256k1算法生成的椭圆曲线空间对象;第二生成单元203,用于通过初始化过的所述密钥对生成器生成密钥对;第三生成单元204,用于依据所述密钥对,生成目标公钥和目标私钥,解决了相关技术中各运行平台的密钥对不能通用的问题,进而达到了提高开发效率的技术效果。
可选地,所述第三生成单元204包括:第一生成子单元,用于创建公钥字符串流对象,并依据所述公钥字符串流对象生成目标公钥对象,其中,所述目标公钥对象是增强安全的私人函件编码流对应的公钥对象;第一获取子单元,用于从所述密钥对中获取公钥字节数据信息;第一写入子单元,用于将所述公钥字节数据信息写入所述目标公钥对象中;第一输出子单元,用于关闭所述目标公钥对象并输出公钥字符串信息;第二生成子单元,用于将所述公钥字符串信息输入至密钥对数组中和/或者,将所述公钥字符串信息保存至密钥文件中以生成所述目标公钥。
可选地,所述第三生成单元204包括:第三生成子单元,用于创建私钥字符串流对象,并依据所述私钥字符串流对象生成目标私钥对象,其中,所述目标私钥对象是增强安全的私人函件编码流对应的私钥对象;第二获取子单元,用于从所述密钥对中获取私钥字节数据信息;第二写入子单元,用于将所述私钥字节数据信息写入所述目标私钥对象中;第二输出子单元,用于关闭所述目标私钥对象并输出私钥字符串信息;第四生成子单元,用于将所述私钥字符串信息输入至密钥对数组中和/或者,将所述私钥字符串信息保存至密钥文件中以生成所述目标私钥。
可选地,所述装置还包括:签名单元,用于在依据所述密钥对,生成目标公钥和目标私钥之后,基于所述目标私钥对原文内容进行数字签名。
可选地,所述签名单元包括:第三获取子单元,用于获取原文内容;第一创建子单元,用于依据私钥字节数据信息,创建第一字节输入流对象;第二创建子单元,用于依据所述第一字节输入流对象,创建私钥读取缓冲区对象;第四获取子单元,用于依据所述私钥读取缓冲区对象获取私钥装载对象;第五获取子单元,用于依据所述私钥装载对象,获取私钥Key对象;第五生成子单元,用于依据私钥Key对象,生成数字签名对象;第三输出子单元,用于通过所述数字签名对象对所述原文内容进行椭圆曲线数字签名,并输出第一预设格式的签名密文。
可选地,所述装置还包括:验证单元,用于在基于所述目标私钥对原文内容进行数字签名之后,基于所述目标公钥对所述签名密文进行验证。
可选地,所述验证单元包括:第六获取子单元,用于对所述第一预设格式的签名密文进行解码,获得第二预设格式的所述签名密文;第三创建子单元,用于从所述密钥对中获取私钥字节数据信息,并根据公钥字节数据信息创建第二字节输入流对象;读取子单元,用于根据所述字节输入流对象创建公钥读取缓冲区对象;第七获取子单元,用于依据所述公钥读取缓冲区对象,获取公钥Key对象;第六生成子单元,用于依据所述公钥Key对象、SHA256算法和椭圆曲线数字签名算法,生成数字签名验证对象;验证子单元,用于依据所述数字签名验证对象对所述第二预设格式的所述签名密文进行签名验证;第一判定子单元,用于当验证结果为真时,则判定所述签名密文通过所述签名验证;第二判定子单元,用于所述验证结果为假时,则判定所述签名密文未通过所述签名验证。
所述一种基于ECDSA算法生成密钥对的装置包括处理器和存储器,上述第一生成单元201等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决相关技术中各运行平台的密钥对不能通用的问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述一种基于ECDSA算法生成密钥对的方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述一种基于ECDSA算法生成密钥对的方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:基于ECDSA算法生成密钥对生成器;通过预设随机数和椭圆曲线空间对象对所述密钥对生成器进行初始化操作,其中,所述预设随机数是根据所述密钥对生成器的盐值设置的随机数的种子对应的随机数,所述椭圆曲线空间对象是根据secp256k1算法生成的椭圆曲线空间对象;通过初始化过的所述密钥对生成器生成密钥对;依据所述密钥对,生成目标公钥和目标私钥。
可选地,依据所述密钥对,生成目标公钥包括:创建公钥字符串流对象,并依据所述公钥字符串流对象生成目标公钥对象,其中,所述目标公钥对象是增强安全的私人函件编码流对应的公钥对象;从所述密钥对中获取公钥字节数据信息;将所述公钥字节数据信息写入所述目标公钥对象中;关闭所述目标公钥对象并输出公钥字符串信息;将所述公钥字符串信息输入至密钥对数组中和/或者,将所述公钥字符串信息保存至密钥文件中以生成所述目标公钥。
可选地,依据所述密钥对,生成目标私钥包括:创建私钥字符串流对象,并依据所述私钥字符串流对象生成目标私钥对象,其中,所述目标私钥对象是增强安全的私人函件编码流对应的私钥对象;从所述密钥对中获取私钥字节数据信息;将所述私钥字节数据信息写入所述目标私钥对象中;关闭所述目标私钥对象并输出私钥字符串信息;将所述私钥字符串信息输入至密钥对数组中和/或者,将所述私钥字符串信息保存至密钥文件中以生成所述目标私钥。
可选地,在依据所述密钥对,生成目标公钥和目标私钥之后,所述方法还包括:基于所述目标私钥对原文内容进行数字签名。
可选地,在基于所述目标私钥对原文内容进行数字签名,包括:获取原文内容;依据私钥字节数据信息,创建第一字节输入流对象;依据所述第一字节输入流对象,创建私钥读取缓冲区对象;依据所述私钥读取缓冲区对象获取私钥装载对象;依据所述私钥装载对象,获取私钥Key对象;依据私钥Key对象,生成数字签名对象;通过所述数字签名对象对所述原文内容进行椭圆曲线数字签名,并输出第一预设格式的签名密文。
可选地,在基于所述目标私钥对原文内容进行数字签名之后,所述方法还包括:基于所述目标公钥对所述签名密文进行验证。
可选地,基于所述目标公钥对所述签名密文进行验证,包括:对所述第一预设格式的签名密文进行解码,获得第二预设格式的所述签名密文;从所述密钥对中获取私钥字节数据信息,并根据公钥字节数据信息创建第二字节输入流对象;根据所述字节输入流对象创建公钥读取缓冲区对象;依据所述公钥读取缓冲区对象,获取公钥Key对象;依据所述公钥Key对象、SHA256算法和椭圆曲线数字签名算法,生成数字签名验证对象;依据所述数字签名验证对象对所述第二预设格式的所述签名密文进行签名验证;如果验证结果为真,则所述签名密文通过所述签名验证;如果所述验证结果为假,则所述签名密文未通过所述签名验证。本文中的设备可以是服务器、PC、PAD、手机等。
本发明还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:基于ECDSA算法生成密钥对生成器;通过预设随机数和椭圆曲线空间对象对所述密钥对生成器进行初始化操作,其中,所述预设随机数是根据所述密钥对生成器的盐值设置的随机数的种子对应的随机数,所述椭圆曲线空间对象是根据secp256k1算法生成的椭圆曲线空间对象;通过初始化过的所述密钥对生成器生成密钥对;依据所述密钥对,生成目标公钥和目标私钥。
可选地,依据所述密钥对,生成目标公钥包括:创建公钥字符串流对象,并依据所述公钥字符串流对象生成目标公钥对象,其中,所述目标公钥对象是增强安全的私人函件编码流对应的公钥对象;从所述密钥对中获取公钥字节数据信息;将所述公钥字节数据信息写入所述目标公钥对象中;关闭所述目标公钥对象并输出公钥字符串信息;将所述公钥字符串信息输入至密钥对数组中和/或者,将所述公钥字符串信息保存至密钥文件中以生成所述目标公钥。
可选地,依据所述密钥对,生成目标私钥包括:创建私钥字符串流对象,并依据所述私钥字符串流对象生成目标私钥对象,其中,所述目标私钥对象是增强安全的私人函件编码流对应的私钥对象;从所述密钥对中获取私钥字节数据信息;将所述私钥字节数据信息写入所述目标私钥对象中;关闭所述目标私钥对象并输出私钥字符串信息;将所述私钥字符串信息输入至密钥对数组中和/或者,将所述私钥字符串信息保存至密钥文件中以生成所述目标私钥。
可选地,在依据所述密钥对,生成目标公钥和目标私钥之后,所述方法还包括:基于所述目标私钥对原文内容进行数字签名。
可选地,在基于所述目标私钥对原文内容进行数字签名,包括:获取原文内容;依据私钥字节数据信息,创建第一字节输入流对象;依据所述第一字节输入流对象,创建私钥读取缓冲区对象;依据所述私钥读取缓冲区对象获取私钥装载对象;依据所述私钥装载对象,获取私钥Key对象;依据私钥Key对象,生成数字签名对象;通过所述数字签名对象对所述原文内容进行椭圆曲线数字签名,并输出第一预设格式的签名密文。
可选地,在基于所述目标私钥对原文内容进行数字签名之后,所述方法还包括:基于所述目标公钥对所述签名密文进行验证。
可选地,基于所述目标公钥对所述签名密文进行验证,包括:对所述第一预设格式的签名密文进行解码,获得第二预设格式的所述签名密文;从所述密钥对中获取私钥字节数据信息,并根据公钥字节数据信息创建第二字节输入流对象;根据所述字节输入流对象创建公钥读取缓冲区对象;依据所述公钥读取缓冲区对象,获取公钥Key对象;依据所述公钥Key对象、SHA256算法和椭圆曲线数字签名算法,生成数字签名验证对象;依据所述数字签名验证对象对所述第二预设格式的所述签名密文进行签名验证;如果验证结果为真,则所述签名密文通过所述签名验证;如果所述验证结果为假,则所述签名密文未通过所述签名验证。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (7)
1.一种基于ECDSA算法生成密钥对的方法,其特征在于,包括:
基于ECDSA算法生成密钥对生成器;
通过预设随机数和椭圆曲线空间对象对所述密钥对生成器进行初始化操作,其中,所述预设随机数是根据所述密钥对生成器的盐值设置的随机数的种子对应的随机数,所述椭圆曲线空间对象是根据secp256k1算法生成的椭圆曲线空间对象;
通过初始化过的所述密钥对生成器生成密钥对;
依据所述密钥对,生成目标公钥和目标私钥,其中,
依据所述密钥对,生成目标公钥包括:
创建公钥字符串流对象,并依据所述公钥字符串流对象生成目标公钥对象,其中,所述目标公钥对象是增强安全的私人函件编码流对应的公钥对象;
从所述密钥对中获取公钥字节数据信息;
将所述公钥字节数据信息写入所述目标公钥对象中;
关闭所述目标公钥对象并输出公钥字符串信息;
将所述公钥字符串信息输入至密钥对数组中和/或者,将所述公钥字符串信息保存至密钥文件中以生成所述目标公钥,其中,在依据所述密钥对,生成目标公钥和目标私钥之后,所述方法还包括:
基于所述目标私钥对原文内容进行数字签名,其中,
在基于所述目标私钥对原文内容进行数字签名,包括:
获取原文内容;
依据私钥字节数据信息,创建第一字节输入流对象;
依据所述第一字节输入流对象,创建私钥读取缓冲区对象;
依据所述私钥读取缓冲区对象获取私钥装载对象;
依据所述私钥装载对象,获取私钥Key对象;
依据私钥Key对象,生成数字签名对象;
通过所述数字签名对象对所述原文内容进行椭圆曲线数字签名,并输出第一预设格式的签名密文。
2.根据权利要求1所述的方法,其特征在于,依据所述密钥对,生成目标私钥包括:
创建私钥字符串流对象,并依据所述私钥字符串流对象生成目标私钥对象,其中,所述目标私钥对象是增强安全的私人函件编码流对应的私钥对象;
从所述密钥对中获取私钥字节数据信息;
将所述私钥字节数据信息写入所述目标私钥对象中;
关闭所述目标私钥对象并输出私钥字符串信息;
将所述私钥字符串信息输入至密钥对数组中和/或者,将所述私钥字符串信息保存至密钥文件中以生成所述目标私钥。
3.根据权利要求1所述的方法,其特征在于,在基于所述目标私钥对原文内容进行数字签名之后,所述方法还包括:
基于所述目标公钥对所述签名密文进行验证。
4.根据权利要求3所述的方法,其特征在于,基于所述目标公钥对所述签名密文进行验证,包括:
对所述第一预设格式的签名密文进行解码,获得第二预设格式的所述签名密文;
从所述密钥对中获取私钥字节数据信息,并根据公钥字节数据信息创建第二字节输入流对象;
根据所述字节输入流对象创建公钥读取缓冲区对象;
依据所述公钥读取缓冲区对象,获取公钥Key对象;
依据所述公钥Key对象、SHA256算法和椭圆曲线数字签名算法,生成数字签名验证对象;
依据所述数字签名验证对象对所述第二预设格式的所述签名密文进行签名验证;
如果验证结果为真,则所述签名密文通过所述签名验证;
如果所述验证结果为假,则所述签名密文未通过所述签名验证。
5.一种基于ECDSA算法生成密钥对的装置,其特征在于,包括:
第一生成单元,用于基于ECDSA算法生成密钥对生成器;
初始化单元,用于通过预设随机数和椭圆曲线空间对象对所述密钥对生成器进行初始化操作,其中,所述预设随机数是根据所述密钥对生成器的盐值设置的随机数的种子对应的随机数,所述椭圆曲线空间对象是根据secp256k1算法生成的椭圆曲线空间对象;
第二生成单元,用于通过初始化过的所述密钥对生成器生成密钥对;
第三生成单元,用于依据所述密钥对,生成目标公钥和目标私钥,其中,所述第三生成单元包括:第一生成子单元,用于创建公钥字符串流对象,并依据所述公钥字符串流对象生成目标公钥对象,其中,所述目标公钥对象是增强安全的私人函件编码流对应的公钥对象;第一获取子单元,用于从所述密钥对中获取公钥字节数据信息;第一写入子单元,用于将所述公钥字节数据信息写入所述目标公钥对象中;第一输出子单元,用于关闭所述目标公钥对象并输出公钥字符串信息;第二生成子单元,用于将所述公钥字符串信息输入至密钥对数组中和/或者,将所述公钥字符串信息保存至密钥文件中以生成所述目标公钥,其中,
所述装置还包括:签名单元,用于在依据所述密钥对,生成目标公钥和目标私钥之后,基于所述目标私钥对原文内容进行数字签名,其中,
所述签名单元包括:第三获取子单元,用于获取原文内容;第一创建子单元,用于依据私钥字节数据信息,创建第一字节输入流对象;第二创建子单元,用于依据所述第一字节输入流对象,创建私钥读取缓冲区对象;第四获取子单元,用于依据所述私钥读取缓冲区对象获取私钥装载对象;第五获取子单元,用于依据所述私钥装载对象,获取私钥Key对象;第五生成子单元,用于依据私钥Key对象,生成数字签名对象;第三输出子单元,用于通过所述数字签名对象对所述原文内容进行椭圆曲线数字签名,并输出第一预设格式的签名密文。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至4中任意一项所述一种基于ECDSA算法生成密钥对的方法。
7.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行权利要求1至4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010761776.0A CN111865616B (zh) | 2020-07-31 | 2020-07-31 | 基于ecdsa算法生成密钥对的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010761776.0A CN111865616B (zh) | 2020-07-31 | 2020-07-31 | 基于ecdsa算法生成密钥对的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111865616A CN111865616A (zh) | 2020-10-30 |
CN111865616B true CN111865616B (zh) | 2024-03-22 |
Family
ID=72953895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010761776.0A Active CN111865616B (zh) | 2020-07-31 | 2020-07-31 | 基于ecdsa算法生成密钥对的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111865616B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113806771A (zh) * | 2021-09-01 | 2021-12-17 | 上海兆芯集成电路有限公司 | 具备椭圆曲线密码算法的处理器及其处理方法 |
CN115834163B (zh) * | 2022-11-09 | 2023-07-18 | 深圳市乐凡信息科技有限公司 | 加密数据的秘钥生成方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109600229A (zh) * | 2018-11-28 | 2019-04-09 | 董志忠 | 基于ssl标准的跨平台的rsa算法 |
CN109802967A (zh) * | 2019-01-25 | 2019-05-24 | 上海创景信息科技有限公司 | 区块链信息追踪方法和系统 |
CN110874726A (zh) * | 2019-11-20 | 2020-03-10 | 上海思赞博微信息科技有限公司 | 一种基于tpm的数字货币安全保护方法 |
-
2020
- 2020-07-31 CN CN202010761776.0A patent/CN111865616B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109600229A (zh) * | 2018-11-28 | 2019-04-09 | 董志忠 | 基于ssl标准的跨平台的rsa算法 |
CN109802967A (zh) * | 2019-01-25 | 2019-05-24 | 上海创景信息科技有限公司 | 区块链信息追踪方法和系统 |
CN110874726A (zh) * | 2019-11-20 | 2020-03-10 | 上海思赞博微信息科技有限公司 | 一种基于tpm的数字货币安全保护方法 |
Non-Patent Citations (5)
Title |
---|
Java密码学 非对称加密以及使用secp256k1进行数字签名(ECDSA),也适合Android(上);夏日里的故事;《http://www.jiansu.com/p/676a0eb33d31》;20180127;第1-4节 * |
Java密码学 非对称加密以及使用secp256k1进行数字签名(ECDSA),也适合Android(下);夏日里的阳光;《http://www.jiansu.com/p/e6ac2c75e692》;20180127;第1-4节 * |
基于椭圆曲线密码协议产生会话密钥的研究与设计;刘涛, 严轶群;安徽工程科技学院学报(自然科学版)(第01期);全文 * |
基于椭圆曲线的隐私增强认证密钥协商协议;曹天杰;雷红;;电子学报(第02期);全文 * |
夏日里的故事.Java密码学 非对称加密以及使用secp256k1进行数字签名(ECDSA),也适合Android(上).《http://www.jiansu.com/p/676a0eb33d31》.2018, * |
Also Published As
Publication number | Publication date |
---|---|
CN111865616A (zh) | 2020-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108053211B (zh) | 基于区块链的交易处理方法及装置 | |
KR20210120978A (ko) | 양식을 보안 오토필 하기 위한 비접촉식 카드용 가상 번호 생성용 주문형 응용프로그램의 사용 | |
CN111865616B (zh) | 基于ecdsa算法生成密钥对的方法及装置 | |
CN111931154B (zh) | 基于数字凭证的业务处理方法、装置及设备 | |
CN110224811B (zh) | 物联网加密处理方法、装置及系统 | |
US8819361B2 (en) | Retaining verifiability of extracted data from signed archives | |
CN110362547B (zh) | 日志文件的编码、解析、存储方法和装置 | |
CN108416224B (zh) | 一种数据加解密方法及装置 | |
CN108134673A (zh) | 一种生成白盒库文件的方法及装置 | |
CN113190877A (zh) | 一种模型加载方法、装置、可读存储介质及电子设备 | |
CN110753018A (zh) | 登录认证方法及系统 | |
CN110021291B (zh) | 一种语音合成文件的调用方法及装置 | |
EP3098743A1 (en) | Obscuring software code with split variables | |
CN111553450B (zh) | 二维码生成、验证的方法及装置 | |
CN115292084A (zh) | 一种数据生成方法、装置、电子设备及存储介质 | |
CN111178010B (zh) | 显示数字签名的方法及系统、数据编辑方法及终端 | |
CN113099025A (zh) | 一种在社交应用中添加好友的方法与设备 | |
CN110633564B (zh) | 文件生成方法和装置 | |
CN113378195A (zh) | 一种进行加密通信的方法、设备、介质及程序产品 | |
CN109561123B (zh) | 令牌token的缓存方法及装置 | |
CN113138867B (zh) | 一种实现应用程序间通信的方法、装置及设备 | |
US9600508B1 (en) | Data layer service availability | |
CN116049837B (zh) | 一种可信计算系统及方法、电子设备和存储介质 | |
CN116961925B (zh) | 签名方法、系统、电子设备及存储介质 | |
US20230275741A1 (en) | Tamper-resistant data encoding secure against unbounded polynomial size attack complexity |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |