一篇文章讲述了比特币私钥、公钥和钱包地址的来源和关系

熟悉比特币的温陈静的朋友们一定都知道,比特币的买卖最终是通过钱包地址实现的,就像我们日常生活中使用的银行卡号码一样。我们随便找一个比特币的钱包地址。让我们看一看:A9 NXHAVBARBQYHATHJRU7的1QCXUWO5。然而,当谈到如何计算比特币的钱包地址时,很少有人能够解释清楚。

接下来,陈静将通过实际计算解释比特币的钱包地址是如何来的,公钥和私钥是如何来的,以及它们之间的关系。

在下面的过程中,你可能不一定知道转换的原理,但知道它们的循环过程。

众所周知,比特币基于数学加密,而不是像银行卡那样的信用。我们都熟悉基于信用卡系统的银行卡号码,当我们申请银行卡时,这些号码由银行随机分配。比特币是如何获得钱包地址的?在比特币:点对点电子现金系统中,中本聪提到使用椭圆加密算法(ECDSA)生成比特币的私钥和公钥。

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

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

然后我们可以整理出一个线索:私钥-公钥-比特币钱包地址从比特币私钥中获取我们日常转账中使用的比特币钱包地址总共需要九个步骤,中间使用SHA256加密、RIPEMD160加密和BASE58编码。

接下来,我们将用一个实际案例模拟整个过程:步骤1:生成的随机私钥是一个随机数,随机选择一个32字节的数字。该数字的范围是1 ~ 0 xfffffffffffffffffffffffffffffffffffffffffffbaaedce 6 af 48 a 03 bbfd 25 E8 CD 0364141之间的数字,以便于以后计算。我们随机生成合法私钥:8f 72 F6 b 29 E6 e 225 a 36 b 68 dfe 333 c 7 C5 e 55d 83249 D3 D2 CD 6332671 fa 445 C4 DD 3步骤2:在通过椭圆曲线算法生成私钥后,我们使用椭圆曲线加密算法(ECDSA-secp256k1)计算与私钥对应的未压缩公钥。生成的公钥总共是65个字节,其中一个字节是0x04,32个字节是x坐标。其他32个字节是y坐标:公钥p . x:06 ccae 7536386 da 2c 5 add 428 B 099 c 7658814 ca 837 f 94 fade 365d 0 EC 6b 1519385公钥p . y:ff 83 EC 5 F2 c 0 c 8 f 016 a 32134589 F7 B 9 e 97 acbefe 2 ef 12 a 91 f 622 B 38 a 1449 ee B步骤3:计算公众的SHA-256哈希值获取标准地址:0406 ccae 7536386 da 2c 5 add 428 b 099 c 7658814 ca 837 f 94 fade 365d 0 EC 6b 1519385 ff 83 EC 5 F2 c 0 c8 f 016 a 32134589 F7 b 9 e 97 acbfefd2ef 12a 91 fa 622 b 38 a 1449 eeb,用于SHA-256哈希。计算,得到结果:2572 E5 F4 A8 e 77 ddf 5 bb 35 B9 e 61 c 61 f 66455 a4 a 24 bcfd 6 CB 190 A8 E8 ff 48 fc 097d步骤4:计算RIPEMP-160哈希值取上一步的结果并执行RIPEMP-160计算。结果:0b 14 f 003d 63 ab 31 AEF 5 fede 2b 504699547 DD 1 F6步骤5:添加地址版本号(比特币主网络版本号“0x00”)以获取上一步骤的结果,并将十六进制00添加到前面。即,000 b 14 f 003d 63 ab 31 AEF 5 fede 2b 504699547 DD 1 F6步骤6:计算SHA-256哈希值取前一步骤的结果并进行SHA-256计算得到:DD c 2270 f 93 cc 84 c 6869 DD 373 F3 c 340 bbf 5 CB 9 A8 f 5559297 cc 9 e5d 947 aab 2536然后,针对上述结果再次计算SHA-256哈希值,得到869 AC 57 b 83 c在将这4个字节加载到步骤5的结果中之后,这是比特币地址的十六进制形式:869 AC 57 b 000 b 14 f 003d 63 ab 31 AEF 5 fed 2b 504699547 DD 1 f 6步骤9:使用Base58代码转换地址,并且Base58代码对上一步骤的结果进行编码以获得:1 qcxruoxwo 5 by a9 nxhavrabqyhathjru 7,这是我们经常看到的传统比特币钱包地址。

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

发表评论