一种区块链地址私钥的创建方法
技术领域
本发明涉及区块链技术领域,特别是一种区块链地址私钥的创建方法。
背景技术
私钥是保证用户权益的底线,在绝大多数区块链中,每一个用户都有一对公钥和私钥,由于私钥字符无规律还很长,导致几乎没有用户会直接去记住这个私钥,更多的是以图片二维码的形式保存到相册,或者直接由第三方钱包服务商统一保管,这样做可以获得一些直接好处:一是以图片二维码的形式保存方便用户转移与保管;二是第三方钱包服务商统一保管的好处是用户只需记住服务商那里设置的密码即可。但是在获得这些好处的同时,也带来了一些隐患:一是图片容易丢失;二是第三方钱包服务商可能面临安全漏洞、关门倒闭,监守自盗等问题,其本质上是用钱包服务商的信用换区钱包密钥,这样做的话有违区块链去中心,去信用中介的初衷。
传统区块链私钥的生成过程中会使私钥保存在区块链数据交易过程当中,由于区块链数据是开放的,所以用户的密码与私钥都不能保存在区块链上,任何形式的保存都面临被盗被破解的风险。因此,如何创建私钥以及创建过程的操作性保证是单向不可逆的才可以更好保证用户的数据安全与交易安全,真正做到去中心的目的。
发明内容
本发明旨在提出一种区块链地址私钥的创建方法,通过本发明所提及的技术方案可以解决传统密码位数少强度低容易被破解、原始密钥字符乱无意义难记住、第三方保管中心机构不可靠等一系列问题。具体技术内容如下:
一种区块链地址私钥的创建方法,所述创建方法包括:
S1:用户选用一个信息作为种子,经由安全散列算法生成一个唯一识别特征;
S2:将唯一识别特征作为sodium签名算法的输入条件生成公钥与私钥对。
进一步的,所述S1当中的信息是用户自定义信息。
进一步的,所述安全散列算法为sha256算法。
进一步的,所述Sha256算法具体过程如下:
Step1:附加填充比特;对报文进行填充使报文长度与448模512同余(长度=448mod512),填充的比特数范围是1到512,填充比特串的最高位为1,其余位为0;
Step2:附加长度值;将用64-bit表示的初始报文(填充前)的位长度附加在步骤1的结果后(低位字节优先);
Step3:初始化缓存;使用一个256-bit的缓存来存放该散列函数的中间及最终结果。该缓存表示为A=0x6A09E667,B=0xBB67AE85,C=0x3C6EF372,D=0xA54FF53A,E=0x510E527F,F=0x9B05688C,G=0x1F83D9AB,H=0x5BE0CD19;
Step4:处理512-bit(16个字)报文分组序列,生成唯一识别特征。
进一步的,所述唯一识别特征对应着经由所述sha256算法得出的用作表示大量数据的固定大小的唯一值,一旦所述用户选取的信息发生变化,所述唯一识别特征也会发生变化,即用户选取的信息与唯一识别特征是一一对应的。
进一步的,所述S1当中sha256算法生成唯一识别特征的过程是单向不可逆的。
进一步的,所述S2当中通过sodium签名算法生成公钥与私钥对的过程是单向不可逆的。
进一步的,所述公钥与私钥是一一匹配对应的,所述公钥用于验证用户所发布数据是否由该用户自己加密,所述私钥用于用户在交易上进行加密签名,用户将经过加密签名的交易数据发布至区块链上。
进一步的,所述用户创建区块链私钥的过程与区块链数据交易过程是分离的过程。
进一步的,所述通过S1、S2步骤生成的私钥与自定义信息是一一对应的。
进一步的,所述私钥生成过程是实时进行的,私钥在签名后自动销毁,整个过程私钥不落地,不传输。
相比现有的技术方案,本发明具有以下有益效果:
(1)可以解决传统密码位数少强度低容易被破解、原始密钥字符乱无意义难记住、第三方保管中心机构不可靠等一系列问题;
(2)sha256算法和sodium签名算法都是单向加密不可逆过程,除用户以外的任何人都无法知道数据加密前的唯一识别特征,更不用说自定义信息,真正做到保密作用;
(3)在区块链上只会存在加密后的数据,而不会存私钥,更不会存唯一识别特征和自定义信息,从而更好的保护了用户账户的安全。
附图说明
图1是本发明方案私钥创建流程示意图;
图2是本发明方案Sha256算法流程示意图;
图3-图6是本发明方案包含的编码内容。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详述。在此需要说明的是,下面所描述的本发明各个实施例中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
对本发明做进一步说明之前,先对本发明当中涉及到的一些专有名词稍作说明:
安全散列算法:安全散列算法SHA(Secure Hash Algorithm)是美国国家安全局(NSA)设计,美国国家标准与技术研究院(NIST)发布的一系列密码散列函数,包括SHA-1、SHA-224、SHA-256、SHA-384和SHA-512等变体。主要适用于数字签名标准(DigitalSignature Standard DSS)里面定义的数字签名算法(Digital SignatureAlgorithm DSA),其中sha256算法的哈希值是256位。
签名算法:签名算法是指数字签名的算法。数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。数字签名是通过一个单向函数,对要传送的信息进行处理得到的用以认证信息来源,并核实信息在传送过程中是否发生变化的一个字母数字串。目前应用最为广泛的三种签名算法是:Rabin签名、DSS签名、RSA签名。
如图1所示,一种区块链地址私钥的创建方法,包括以下步骤:
S1:用户选用一个信息作为种子,经由安全散列算法生成一个唯一识别特征;
S2:将唯一识别特征作为sodium签名算法的输入条件生成公钥与私钥对。
以下是结合实施例具体讲述操作过程:
本发明是通过运用sha256安全散列算法和sodium签名算法生成私钥的过程,该方案与传统生成私钥不一样的地方在于私钥以及私钥的生成过程。
如图2所示,首先,用户可以选用一个自定义信息,该信息可以是任何一种国家语言,不仅仅是英文,还可以是中文、阿拉伯文、泰文等,甚至可以是一张图片,一段声音、一段录像、一段运行轨迹等等,通过这些信息经由sha256加密算法生成一个唯一识别特征。SHA-256算法输入自定义信息的最大长度不超过2^64bit,输入按512-bit分组进行处理,产生的输出是一个256-bit的唯一识别特征。Sha256算法具体过程如下:
Step1:附加填充比特。对报文进行填充使报文长度与448模512同余(长度=448mod512),填充的比特数范围是1到512,填充比特串的最高位为1,其余位为0。
Step2:附加长度值。将用64-bit表示的初始报文(填充前)的位长度附加在步骤1的结果后(低位字节优先)。
Step3:初始化缓存。使用一个256-bit的缓存来存放该散列函数的中间及最终结果。该缓存表示为A=0x6A09E667,B=0xBB67AE85,C=0x3C6EF372,D=0xA54FF53A,E=0x510E527F,F=0x9B05688C,G=0x1F83D9AB,H=0x5BE0CD19。
Step4:处理512-bit(16个字)报文分组序列,生成唯一识别特征。
其次,用户将生成的唯一识别特征,即通过sha256算法生成的报文摘要作为sodium签名算法的输入条件生成公钥与私钥对,公钥与私钥是一一匹配对应的,公钥用于验证用户所发布数据是否由该用户自己加密,私钥用于用户在交易上进行加密签名,用户将经过加密签名的交易数据发布至区块链上,在整个区块链私钥的创建过程当中,一个自定义信息对应一个私钥,而且过程当中只存在单向运行,不存在可逆情况。
通过sha256算法和sodium签名算法生成的公钥是所有用户均知的,用于验证用户所发送的数据是不是该用户发的,但是不用知道相对应的私钥即可验证。
用户只需要记住自定义信息,即可指导本地节点生成私钥从而对生成的数据进行加密签名,签名后私钥自定进行销毁,不会存储到磁盘上,不会发送到网络中。
用户在使用过程中实时算出私钥再进行数据加密,彻底解决了私钥被盗的问题。
进一步的,一种区块链地址私钥的创建编码过程包括:
(1)setlanguage
(2)getnewpassphrase
(3)getpublickey
(4)signtransaction
以上所述,仅是本发明的较佳实施例而已,并非对本发明的技术范围作任何限制,故但凡依本发明的权利要求和说明书所做的变化或修饰,皆应属于本发明专利涵盖的范围之内。