主页 > imtoken钱包安卓版 > 一篇文章了解比特币私钥、公钥、钱包地址的由来及关系

一篇文章了解比特币私钥、公钥、钱包地址的由来及关系

imtoken钱包安卓版 2023-02-14 06:43:54

熟悉比特币的朋友一定知道,买卖比特币最终是通过一个钱包地址来实现的,就像我们日常使用的银行卡号一样。 :

1QCXRuoxWo5Bya9NxHaVBArBQYhatHJrU7

但说到比特币钱包地址是如何计算的,可能很少有人能说清楚。

接下来,景臣将通过实际计算为大家讲解比特币钱包地址是怎么来的,公钥和私钥是怎么来的,以及它们之间的关系。

后面的过程你不一定明白转换的原理,你只需要知道它们的流通过程即可。

众所周知,比特币是基于数学加密的比特币钱包申请流程,而不是像银行卡那样基于信用的。我们都熟悉基于信用系统的银行卡号。发卡的时候银行随机发,那么比特币钱包地址是怎么来的呢?

在“比特币:一种点对点的电子现金系统”一文中,中本聪提到了使用椭圆加密算法 (ECDSA) 来生成比特币的私钥和公钥。

基于椭圆加密原理,可以从私钥计算出公钥,然后通过一系列数字签名操作从公钥中得到比特币钱包地址。

因为比特币地址可以从公钥计算出来,所以我们经常把公钥和比特币地址混淆。它们都指的是同一个概念,比特币钱包地址只是另一种格式。 ,但两者的外在表现不同。

比特币钱包申请流程

然后我们可以整理出一个上下文:

私钥——公钥——比特币钱包地址

从比特币私钥获取我们日常转账使用的比特币钱包地址一共需要九步,中间使用了SHA256加密、RIPEMD160加密和BASE58编码。

下面,我们用一个实际的案例来模拟一下整个过程:

第一步:生成随机私钥

私钥是一个随机数,随机选择一个32字节的数字,这个数字的范围是1~0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141。为了方便在后续计算中,我们随机生成一个有效数字

8F72F6B29E6E225A36B68DFE333C7CE5E55D83249D3D2CD6332671FA445C4DD3

第二步:公钥的椭圆曲线计算

比特币钱包申请流程

生成私钥后,我们使用椭圆曲线加密算法(ECDSA-secp256k1)计算出私钥对应的未压缩公钥。生成的公钥共有65个字节,其中一个字节为0x04,32字节为X坐标,其余32字节为Y坐标:

结果P.X:

06CCAE7536386DA2C5ADD428B099C7658814CA837F94FADE365D0EC6B1519385

结果P.Y:

FF83EC5F2C0C8F016A32134589F7B9E97ACBFEFD2EF12A91FA622B38A1449EEB

第三步:计算出的SHA-256哈希值

将原来地址拼合,标准:

0406CCAE7536386DA2C5ADD428B099C7658814CA837F94FADE365D0EC6B1519385FF83EC5F2C0C8F016A32134589F7B9E97ACBFEFD2EF12A91FA622B38A1449EEB

比特币钱包申请流程

爱心进行SHA-256哈希计算并得到结果:

2572e5f4a8e77ddf5bb35b9e61c61f66455a4a24bcfd6cb190a8e8ff48fc097d

第 4 步:计算 RIPEMD-160 哈希值

取上一步的结果,进行RIPEMD-160计算,得到Result:

0b14f003d63ab31aef5fedde2b504699547dd1f6

第五步:添加地址版本号(比比特币主网版本号“0x00”)

取上一步的结果,在前面加上16进制的00,即:

000b14f003d63ab31aef5fedde2b504699547dd1f6

比特币钱包申请流程

第一步6:计算SHA-256哈希值

取上一步的结果,进行SHA-256计算,可以得到:结果是再次计算SHA-256哈希值,得到:

869ac57b83ccf75ca9da8895823562fffb611e3c297d9c2d4612aeeb32850078

第7步:取上一步结果的前4个字节(8位十六进制)

869ac57b

第 8 步:将这 4 个字节添加到第 5 步的结果中

作为校验位比特币钱包申请流程,加上这4个字节加载第五步的结果后,这是比特币地址的十六进制形式:

869ac57b000b14f003d63ab31aef5fedde2b504699547dd1f6

比特币钱包申请流程

第九步:用Base58编码转换地址

Base58编码上一步的结果得到:

1QCXRuoxWo5Bya9NxHaVBArBQYhatHJrU7

这是我们经常看到的传统比特币钱包地址。

以上步骤可以简化如下图所示:

图片

我们常说的比特币,图中的公钥是指第二步生成的结果,HASH160是指第四步RIPEMD160签名生成的结果。由于RIPEMD也是一种HASH算法,所以统称为HASH160,我们常用的比特币地址就是BASE58编码的结果。

推荐阅读: