一种以太坊密码算法国产化的方法与流程

文档序号:14993330发布日期:2018-07-20 22:57阅读:1098来源:国知局

本发明实施例涉及区块链技术领域,具体涉及一种以太坊密码算法国产化的方法。



背景技术:

区块链技术起源于比特币,是一种利用密码学方法保护数据安全的分布式存储技术,具有不可篡改、不可伪造等显著特性,被广泛应用于数字经济、互联网治理和大数据发展等多个技术领域。区块链的本质是安全可靠的数据存储和处理,于是密码算法就成为了区块链平台的最关键的部分。

然而,目前主流的区块链平台普遍使用的是国外密码算法,如ecdsa椭圆曲线签名算法、sha3密码杂凑算法、ripemd160密码杂凑算法、aes分组密码算法等。这些算法大多是美国标准化的算法。

信息安全已经上升为国家战略的今天,区块链的核心算法—密码算法理应自主可控。



技术实现要素:

针对现有技术存在的问题,本发明实施例提供一种以太坊密码算法国产化的方法。

本发明实施例提供一种以太坊密码算法国产化的方法,所述方法包括:

获取待加密信息;

根据所述待加密信息的类型,获取与所述类型相对应的加密算法;其中,所述加密算法是替代以太坊开源代码国外密码算法的国产密码算法;

根据所述加密算法对所述待加密信息进行加密处理,以生成加密信息。

本发明实施例提供的以太坊密码算法国产化的方法,使用国产密码算法替换以太坊中的国外密码算法,并进行参数的调整、sm3散列值长度的扩展、通过恢复公钥实现sm2签名算法的验证等,由于国外密码算法不安全,可能有植入后门,使用替代后的国产密码算法能够实现真正意义上的自主可控。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例以太坊密码算法国产化的方法流程示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例以太坊密码算法国产化的方法流程示意图,如图1所示,本发明实施例提供的一种以太坊密码算法国产化的方法,包括以下步骤:

s1:获取待加密信息。

具体的,区块链平台中的加密处理装置获取待加密信息。待加密信息可以包括不同的类型。

s2:根据所述待加密信息的类型,获取与所述类型相对应的加密算法;其中,所述加密算法是替代以太坊开源代码国外密码算法的国产密码算法。

具体的,加密处理装置根据所述待加密信息的类型,获取与所述类型相对应的加密算法;其中,所述加密算法是替代以太坊开源代码国外密码算法的国产密码算法。待加密信息的类型可以包括签名字符、公钥字符和摘要字符等,与签名字符相对应的加密算法可以是sm2数字签名算法;与公钥字符相对应的加密算法可以是sm2公钥加密算法;与摘要字符相对应的加密算法可以是sm3密码杂凑算法。需要说明的是:上述的sm2数字签名算法、sm2公钥加密算法和sm3密码杂凑算法都是国产密码算法;可以用sm2数字签名算法替代以太坊开源代码的椭圆曲线签名算法ecdsa;可以用sm2公钥加密算法替代以太坊开源代码的椭圆曲线综合加密算法ecies;可以用sm3密码杂凑算法替代以太坊开源代码的一系列哈希算法,可以是sha3算法。

s3:根据所述加密算法对所述待加密信息进行加密处理,以生成加密信息。

具体的,加密处理装置根据所述加密算法对所述待加密信息进行加密处理,以生成加密信息。举例说明如下:

一、数字签名算法示例数据

椭圆曲线签名算法ecdsa示例:

以太坊的crypto子模块中包含了所有密码学算法接口的封装,在crypto模块下还有secp256k1子包,该包实现了secp256k1曲线域上的基本运算,使用secp256k1曲线y^2=x^3+ax+b为例进行说明:

曲线参数:

p=fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f

a=0000000000000000000000000000000000000000000000000000000000000000

b=0000000000000000000000000000000000000000000000000000000000000007

基点g:

gx=79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798

gy=483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8

阶n:

n=fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141

生成公私钥对:

prv=4d17899cbd204fdef0ddcac345dd8ae826de063d39d30a5b270dfb58cf32bdd0

pub=(744444566f38297da677000ba1f09d897180c53d22fb8abc108b7f88c6121f0c,

886ef5e9d6ce015dd9cdd0c7927ff13b649510a959d212f1446577f48895983d)

签名字符串(签名字符):

“may4thbwizu”

签名输出:

r=caa814bf03e32cc2c5f2b72151af83172d3e2902389186e43788b0a2d1352ae4e3

s=a1fab94862e83b50e929630fbd44d62cf7399e9ca2faab1bc8bb24a22d9ad200

sm2数字签名算法示例:

参数使用sm2标准中给出的曲线。

生成公私钥对:

prv=9655826314c9cfddb1e17341ad52afe009c625b159c9cc7d5cde41733d3b9cf3

pub=(2bdcd5db5042bbc0d1fcee1aeef964fc22a8254354ad8be30d13052ddddf61cd,

144ad97e61ce26d200d3b7688581b508072b96b1aa7a923e6539a7ee8233b816)

签名字符串(签名字符):

“may4thbwizu”

签名输出:

r=b1578406895b69bb3bc6bec3874bd0fc7e00c6caae3b8a401ddd2a20603c9412

s=9b802e5eb1115193e26388421c643f9cc998f3006f66f64f5a298baa578e98e。

二、公钥加密算法示例数据:

椭圆曲线综合加密算法ecies示例:

生成公私钥对:

prv=13d08f4a34a9c87db08c102485c017f62c97988e33621b099c7b17a55d47c95f

pub=(76b7de101c63816487232bd25539fd4c07090012b643856a1782b65351d5992e,

de3aae59b3b988c69b92eecf0b67ce4291e9ae08b82420aaabbbb72aeb9c258f)

加密字符串(公钥字符):

“hello,world.”

加密后密文:

04ec30defd14b52d1bf427f21e072f5e15a11591a6258a652729ea0c5b9baea3e015f4147ee6163ea1a4106b0683087220ccae44bbc2caafad29ddac73e905b08bab17afd574ec08ded8fec7c6127afd197218ff8644ad48d143508a143f890274d99da70497235b0cbc1317a5cc05b507b82865553e0810167de5b74a4c

解密后消息:

48656c6c6f2c20776f726c642e,即“hello,world.”的ascii编码。

sm2公钥加密算法示例:

生成公私钥对:

prv=ded17a6bf28bf5c469a882ccc37bf618d1cda2e543767dbd7d36de6cd8cafe4

pub=(2d282e530b9a377de1a0dbc2a6059084be5d6220cbea083909b31a9b9dd360ac,

180991a4f674eb43f906acdfa0fad9205652caa3d0a74b55bdf6ad839609ae5b)

加密字符串(公钥字符):

“hello,world.”

加密后密文:

04435dd04fafcbd7eb9bac470ae973f3bd4560a0398373e20d4926789130882afb208551e8bd21b8ef3cfdf31dccc93eb76859a66a2c8cc1539c5f4a8db18219feabb9768cfad8a2f3af2c02cd6377d268ee9b3be3ea9f4a33c95443beaf80db16ec48cf92a52dfe9b0fe19889b4

解密后消息:

48656c6c6f2c20776f726c642e,即“hello,world.”的ascii编码。

三、密码杂凑算法示例数据:

安全哈希算法3sha3摘要示例:

输入数据(摘要字符):

“abc”

摘要结果:

4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45

sm3密码杂凑算法示例:

输入数据(摘要字符):

“abc”

摘要结果:

66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0。

下面对sm2椭圆密码算法,sm3密码杂凑算法具体实现如何与以太坊兼容做进一步详细描述。

数字签名算法替换

ecdsa算法简介

首先介绍ecdsa算法的工作流程。下文中系统参数为系统参与方所共享的一组数据,它对任何用户都是已知的。我们以用户a表示消息的签名方,用户b表示消息的验证方,da表示用户a的私钥,qa表示其公钥。

系统参数:(curve,g,n),其中curve为算法所基于的椭圆曲线,在以太坊中该曲线为sec2-v2标准中指定的secp256k1曲线;g为椭圆曲线域上一个阶为素数的基点,n为基点g的阶。

密钥生成:

用户a选取安全的随机数da∈[1,n-1]作为其私钥

用户a计算qa=da×g作为其公钥

数字签名:用户a使用其私钥da对消息m进行签名

计算e=hash(m)

选取安全的随机数k∈[1,n-1]

计算椭圆曲线上的点(x1,y1)=k×g

计算r=x1modn

计算s=k-1(z+r·da)modn

输出最终的签名(r,s)

签名验证:用户b获取了用户a对消息m′的签名(r′,s′)以及其合法公钥qa,尝试验证签名的正确性。

计算e′=hash(m′)

计算w=s-1modn

计算u1=e′wmodn以及u2=rwmodn

计算椭圆曲线点(x1,y1)=u1×g+u2×qa

若u1=r′,则该签名是合法的;否则,签名非法

恢复公钥:ecdsa算法中一项特殊的操作为从签名中恢复出签名者的公钥。在通信、存储资源受限的场合,该操作可以免去传输、存储签名者公钥的必要。以太坊中大量使用了恢复公钥的操作。从签名中恢复公钥的流程如下。

根据签名r(将r作为点的横坐标)计算出椭圆曲线上的两个点r1,r2

计算签名r的逆r-1

计算签名消息的摘要z=h(m)

计算签名者公钥qa

若v=0,则输出公钥qa=r-1(sr1-zg)

若v=1,则输出公钥qa=r-1(sr2-zg)

sm2签名算法简介

以下对sm2算法的工作流程作简单介绍。与ecdsa算法相同,下文中系统参数为系统参与方所共享的一组数据,它对任何用户都是已知的。我们以用户a表示消息的签名方,用户b表示消息的验证方,da表示用户a的私钥,qa表示其公钥。

系统参数:(curve,g,n),其中curve为算法所基于的椭圆曲线,我们使用了与以太坊相同的secp256k1曲线;g为椭圆曲线域上一个阶为素数的基点,n为基点g的阶。

密钥生成:

用户a选取安全的随机数da∈[1,n-1]作为其私钥

用户a计算qa=da×g作为其公钥

数字签名:用户a使用其私钥da对消息m进行签名

计算e=hash(m)

选取安全的随机数k∈[1,n-1]

计算椭圆曲线上的点(x1,y1)=k×g

计算r=(e+x1)modn

计算s=((1+da)-1(k+r·da))modn

输出最终的签名(r,s)

签名验证:用户b获取了用户a对消息m′的签名(r′,s′)以及其合法公钥qa,尝试验证签名的正确性。

计算e′=hash(m′)

计算t=(r′+s′)modn

计算u1=e′wmodn以及u2=rwmodn

计算椭圆曲线点(x1,y1)=s′×g+t×qa

计算r=(e′+x1′)modn

若r=r′,则该签名是合法的;否则,签名非法

恢复公钥:考虑到以太坊中大量使用了从签名中恢复公钥的操作,若替换的算法不支持该操作势必会造成严重的接口不兼容性,导致整个系统都需要进行改动。我们发现在sm2算法中的签名(r,s)具有与ecdsa签名类似的结构,并且通过一定的推导也能够从sm2签名中恢复出签名者的公钥。

计算签名消息的摘要计算e=hash(m)

根据签名r(x-横坐标)计算椭圆曲线上点r′的横坐标x=(r-e)modn

计算(r+s)的逆invrps=(r+s)-1

计算minuss=(r+s)-1·s

计算签名者公钥qa=invrps·r-minuss·g

算法替换概要

根据1、2小节的描述对比ecdsa与sm2算法。

表1ecdsa与sm2-dsa算法对比

从表1及1、2小结的描述中可以看到sm2算法与ecdsa算法不论是在数据结构还是签名、验证等操作上都是相同的,故在进行替换时只需要对签名函数内部的实现进行修改(显然,sm2与ecdsa签名的计算方法是不同的),而无需对暴露给其他模块的相关接口进行调整。此外,由于两种算法的公私钥、签名结构相同,故可以直接借助以太坊ecdsa的数据结构存储这些数据。

算法替换详述

以太坊的crypto子模块中包含了所有密码学算法接口的封装。在gb/crypto包中含有国产sm2/3/4算法的实现。在crypto模块下还有secp256k1子包,该包实现了secp256k1曲线域上的基本运算。以下列出crypto模块中所有签名相关的接口,并给出其替换方案。

表2接口替换列表

公钥加密算法替换

ecies算法简介

以下对ecies算法的工作流程作简单介绍。在以太坊中,ecies算法用于节点之间的p2p加密通信。下文中系统参数为系统参与方所共享的一组数据,它对任何用户都是已知的。我们以用户b表示数据的发送者,他使用用户a的公钥加密一段数据。,用户a表示数据的解密者,他从用户b收到加密后的消息并使用自己的私钥对其进行解密。da表示用户a的私钥,qa表示其公钥。

系统参数:(curve,g,n,s1,s2),其中curve为算法所基于的椭圆曲线,在以太坊中该曲线为sec2-v2r标准中指定的secp256k1曲线;g为椭圆曲线域上一个阶为素数的基点,n为基点g的阶;s1,s2为共享的辅助输入

密钥生成:

用户a选取安全的随机数da∈[1,n-1]作为其私钥

用户a计算qa=da×g作为其公钥

数据加密:用户b使用用户a的公钥qa对加密消息m

选取安全的随机数k∈[1,n-1]

计算椭圆曲线上的点r=k×g

计算椭圆曲线上的点(x1,y1)=k×qa

计算ke||km=kdf(x1||s1)

加密消息c=e(ke;m)

计算d=mac(km;c||s2)

输出密文r||c||d

数据解密:用户a获取了加密后的密文c’=r′||c′||d′,尝试使用其私钥da解密

计算椭圆曲线上的点(x1′,y1′)=r′×da=k×da×g=k×qa

计算ke′||km′=kdf(x1′||s1)

验证d′=mac(km′;c′||s2)

解密消息m′=d(ke′;c′)

sm2加密算法简介

以下简单介绍sm加密算法的工作流程。下文中系统参数为系统参与方所共享的一组数据,它对任何用户都是已知的。我们以用户b表示数据的发送者,他使用用户a的公钥加密一段数据。,用户a表示数据的解密者,他从用户b收到加密后的消息并使用自己的私钥对其进行解密。da表示用户a的私钥,qa表示其公钥。

系统参数:(curve,g,n,s1,s2),其中curve为算法所基于的椭圆曲线,在以太坊中该曲线为sec2-v2标准中指定的secp256k1曲线;g为椭圆曲线域上一个阶为素数的基点,n为基点g的阶;s1,s2为共享的辅助输入

密钥生成:

用户a选取安全的随机数da∈[1,n-1]作为其私钥

用户a计算qa=da×g作为其公钥

数据加密:用户b使用用户a的公钥qa对加密消息m

选取安全的随机数k∈[1,n-1]

计算椭圆曲线上的点c1=k×g,c1按照gb/t32918.1-2016第1部分4.2.8和4.2.4给出的方法转换为比特串

计算椭圆曲线点(x1,y1)=k×qa

计算t=kdf(x1||y1||s1,klen)

加密消息

计算c3=hash(x1||m||y1||s2)

输出密文c=c1||c2||c3

数据解密:用户a获取了加密后的密文c’=c1′||c2′||c3′,尝试使用其私钥da解密

计算椭圆曲线上的点(x1′,y1′)=c1′×da=k×da×g=k×qa

计算t′=kdf(x1′||y1′||s1,klen)

验证c3′=hash(x1′||m||y1′||s2)

解密消息

算法替换说明

根据1、2小结的描述将ecies与sm2算法进行比较.

表3ecies与sm2-pke算法对比

可以看到ecies与sm2算法在数据结构、操作方法上也保持着一致性。我们在crypto/sm2子模块中给出了sm2公钥加密算法的实现,其实现接口参照以太坊的ecies算法。

表4ecies(sm2)算法实现接口

以太坊中其他模块在使用ecies算法时是通过其包名ecies调用函数的。以p2p/rlpx.go第318行为例:

h.randomprivkey,err=ecies.generatekey(rand.reader,crypto.s256(),nil)

由于新加入的sm2加密算法属于另一个子包sm2,替换时我们借助了一个小技巧来解决名称空间的不一致问题:将导入的sm2子包命名为“ecies”,由于两者提供的接口是完全相同的,故不会影响到程序原有的功能,而新的系统在调用“ecies”名称下的方法时实际上调用的是sm2子包中的方法。

密码杂凑算法替换

不同于ecdsa、sm2这些公钥密码算法,密码杂凑算法通常都具有相同的形式。在使用sm3替换以太坊中所使用的sha3系列算法时,我们主要关注算法输出长度的问题。在发明内容的第三小节中我们提到,使用sm3替换的主要问题是其输出长度仅有256比特,而以太坊使用了输出长度为512比特的sha3算法。

我们采用了sec2-v2标准中给出的kdf3函数将sm2算法的输出长度扩充到512个字节。

kdf3函数

通过kdf3函数,我们可以将杂凑算法hash的输出长度扩展到任意l个字节长度。

输入:(x,l);其中x为原始杂凑函数的输出,l为扩展后的杂凑函数输出

输出:hash.eval(i2osp(0,pamt)||x)||...||hash.eval(i2osp(k-1,pamt)||x)

其中

在本文的实现中,我们以sm3作为需要扩充的hash杂凑函数,x为sm3算法的输出,l为512,pamt取4.

2算法替换说明

修改crypto模块中的sha3算法接口,在不修改接口名的前提下将算法替换为sm3算法以及使用kdf3扩充后的算法。

表5以太坊sha3/keccak256算法接口

本发明实施例提供的以太坊密码算法国产化的方法,使用国产密码算法替换以太坊中的国外密码算法,并进行参数的调整、sm3散列值长度的扩展、通过恢复公钥实现sm2签名算法的验证等,由于国外密码算法不安全,可能有植入后门,使用替代后的国产密码算法能够实现真正意义上的自主可控。

在上述实施例的基础上,所述国产密码算法包括sm2数字签名算法;所述类型包括签名字符;相应的,所述根据所述待加密信息的类型,获取与所述类型相对应的加密算法,包括:

若所述待加密信息的类型为签名字符,获取与所述类型相对应的加密算法为sm2数字签名算法;其中,所述sm2数字签名算法替代以太坊开源代码中的椭圆曲线签名算法ecdsa。

具体的,加密处理装置若判断获知所述待加密信息的类型为签名字符,获取与所述类型相对应的加密算法为sm2数字签名算法;其中,所述sm2数字签名算法替代以太坊开源代码中的椭圆曲线签名算法ecdsa。可参照上述实施例,不再赘述。

本发明实施例提供的以太坊密码算法国产化的方法,通过用sm2数字签名算法替代ecdsa,并生成加密信息,有利于管控密码算法。

在上述实施例的基础上,所述国产密码算法包括sm2公钥加密算法;所述类型包括公钥字符;相应的,所述根据所述待加密信息的类型,获取与所述类型相对应的加密算法,包括:

若所述待加密信息的类型为公钥字符,获取与所述类型相对应的加密算法为sm2公钥加密算法;其中,所述sm2公钥加密算法替代以太坊开源代码中的椭圆曲线综合加密算法ecies。

具体的,加密处理装置若判断获知所述待加密信息的类型为公钥字符,获取与所述类型相对应的加密算法为sm2公钥加密算法;其中,所述sm2公钥加密算法替代以太坊开源代码中的椭圆曲线综合加密算法ecies。可参照上述实施例,不再赘述。

本发明实施例提供的基于以太坊和国产密码算法的加密信息处理方法,通过用sm2公钥加密算法替代ecies,并生成加密信息,有利于管控密码算法。

在上述实施例的基础上,所述国产密码算法包括sm3密码杂凑算法;所述类型包括摘要字符;相应的,所述根据所述待加密信息的类型,获取与所述类型相对应的加密算法,包括:

若所述待加密信息的类型为摘要字符,获取与所述类型相对应的加密算法为sm3密码杂凑算法;其中,所述sm3密码杂凑算法替代以太坊开源代码中的一系列哈希算法。

具体的,加密处理装置若判断获知所述待加密信息的类型为摘要字符,获取与所述类型相对应的加密算法为sm3密码杂凑算法;其中,所述sm3密码杂凑算法替代以太坊开源代码中的一系列哈希算法。可参照上述实施例,不再赘述。

本发明实施例提供的以太坊密码算法国产化的方法,通过用sm3密码杂凑算法替代一系列哈希算法,并生成加密信息,有利于管控密码算法。

在上述实施例的基础上,所述方法还包括:

采用密钥派生函数kdf3将所述sm3密码杂凑算法哈希值的输出长度扩展到字节长度l。

具体的,加密处理装置采用密钥派生函数kdf3将所述sm3密码杂凑算法哈希值的输出长度扩展到字节长度l。

不同于ecdsa、sm2这些公钥密码算法,密码杂凑算法通常都具有相同的形式。在使用sm3替换以太坊中所使用的sha3系列算法时,主要关注算法输出长度的问题。使用sm3替换的主要问题是其输出长度仅有256字节,而以太坊使用了输出长度为512字节的sha3算法。为此,可以采用sec2-v2标准中给出的密钥派生函数kdf3将sm3算法的输出长度扩充到512个字节。可以采用如下方法实现:

输入:(x,l);其中x为原始杂凑函数的输出,l为扩展后的杂凑函数输出(扩展后的字节长度)

输出:hash.eval(i2osp(0,pamt)||x)||...||hash.eval(i2osp(k-1,pamt)||x)

其中其中outputlen表示hash函数的输出长度;表示对l/hash.outputlen的计算结果进行向上取整。

在本发明实施例实现过程中,以sm3作为需要扩充的hash杂凑函数,x为sm3算法的输出,l为512,pamt取4。由于l为512,从而实现了将字节长度扩展为512字节。

本发明实施例提供的以太坊密码算法国产化的方法,能够将sm3密码杂凑算法哈希值的输出长度扩展到字节长度l。

在上述实施例的基础上,所述获取待加密信息的步骤之前,所述方法还包括:

根据所述加密算法的类型对所述加密算法进行配置。

具体的,加密处理装置根据所述加密算法的类型对所述加密算法进行配置。针对上述三种情况,具体说明如下:

一、sm2椭圆曲线签名算法替换ecdsa

以以太坊的目录为根目录,ecdsa是在crypto/secp256k1中实现的,sm2椭圆曲线签名算法是在gb/crypto/sm2(存储路径)中实现的,替换的时候需要将gb文件夹拷贝到以太坊下vendor文件夹(指定文件)中,并将以太坊中所有import"github.com/ethereum/go-ethereum/crypto/secp256k1"(导入路径)替换为import"gb/crypto/sm2",即将对ecdsa包的导入替换为对sm2包的导入。

二、sm2椭圆曲线综合加密算法替换ecies

以以太坊的目录为根目录,ecies是在crypto/ecies中实现的,sm2椭圆曲线综合加密算法是在gb/crypto/sm2(存储路径)中实现的,替换的时候需要将gb文件夹拷贝到以太坊下vendor文件夹(指定文件)中,并将以太坊中所有import"github.com/ethereum/go-ethereum/crypto/ecies"(导入路径)替换为import"gb/crypto/sm2",即将对ecies包的导入替换为对sm2包的导入。

三、sm3密码杂凑算法替换sha系列密码杂凑算法

以以太坊的目录为根目录,sha3系列的密码杂凑算法在crypto/sha3中实现的,sha256(sha2系列)算法是调用go库中go/src/crypto/sha256实现的,sm3算法和kdf3算法是在gb/crypto/sm3(存储路径)中实现的,替换的时候需要将gb文件夹拷贝到以太坊下vendor文件夹(指定文件)中,并将以太坊中所有import"github.com/ethereum/go-ethereum/crypto/sha3"(导入路径)替换为import"gb/crypto/sm3",即替换为对sm3包的导入。

本发明实施例提供的以太坊密码算法国产化的方法,通过预先配置加密算法,保证了算法替代的顺利进行。

在上述实施例的基础上,所述根据所述加密算法的类型对所述加密算法进行配置,包括:

根据所述加密算法的类型,获取与所述加密算法的类型相对应的所述加密算法的存储路径。

具体的,加密处理装置根据所述加密算法的类型,获取与所述加密算法的类型相对应的所述加密算法的存储路径。可参照上述实施例,不再赘述。

根据所述存储路径,获取所述加密算法,并将所述加密算法拷贝到指定文件中。

具体的,加密处理装置根据所述存储路径,获取所述加密算法,并将所述加密算法拷贝到指定文件中。可参照上述实施例,不再赘述。

将与所述加密算法的类型相对应的以太坊开源代码的类型的导入路径替代为所述加密算法的存储路径。

具体的,加密处理装置将与所述加密算法的类型相对应的以太坊开源代码的类型的导入路径替代为所述加密算法的存储路径。可参照上述实施例,不再赘述。

本发明实施例提供的以太坊密码算法国产化的方法,通过具体的配置加密算法,进一步保证了算法替代的顺利进行。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的实施例各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1